我的模型中有多个字符串和字符串数组,它们被收集在列表中。代码:
namespace ReinovaGrafieken.Models
{
[JsonObject(MemberSerialization.OptIn)]
public class Graphs
{
[JsonProperty]
public string Names { get; set; }
[JsonProperty]
public string[] AnswerHeaders { get; set; }
[JsonProperty]
public string[] AnswersOne { get; set; }
[JsonProperty]
public string[] AnswersTwo { get; set; }
[JsonProperty]
public string[] AnswersThree { get; set; }
[JsonProperty]
public string[] AnswersFour { get; set; }
[JsonProperty]
public string Questions { get; set; }
[JsonProperty]
public string[] AnteOrPost { get; set; }
}
}
但是当我使用以下代码创建Json时会发生什么:
json = JsonConvert.SerializeObject(graphData);
是不是奇怪地填补了json。 如果我填写每一个字符串([])一次,我会得到8次姓名,答案头等。 但每次只填充一个值。其余的实例都是空的。我知道我可以使用
NullValueHandling = NullValueHandling.Ignore
但是,如果我这样做,我就不能再使用正确的索引了,因为代码会认为每个Names,AnswerHeaders等都是一个索引。
当前输出:
"0":{
"questionName":null,
"AnswerHeaders":null,
"AnswersOne":null,
"AnswersTwo":null,
"AnswersThree":null,
"AnswersFour":null,
"Questions":"Vraag ante 11 & Vraag post 33",
"AnteOrPost":null
},
预期产出:
"0":{
"questionName": "Vraag 1",
"AnswerHeaders": "Wat vond u",
"AnswersOne": ["2", "3", "4", "5", "6"],
"AnswersTwo": ["23","34","4","3"],
"AnswersThree":["34", "34", "5", "4", "2"].
"AnswersFour":["23","3","4","3","2"],
"Questions":"Vraag ante 11 & Vraag post 33",
"AnteOrPost": "Ante"
},
答案 0 :(得分:2)
您当前的输出:
"0":{
"questionName":null,
"AnswerHeaders":null,
"AnswersOne":null,
"AnswersTwo":null,
"AnswersThree":null,
"AnswersFour":null,
"Questions":"Vraag ante 11 & Vraag post 33",
"AnteOrPost":null
},
意味着JsonConvert
无法将您的数组转换为json字符串 OR ,这意味着您在序列化时没有填充数组。
通过使用演示数据填充字段,确保您的json已正确填充:
AnswerHeaders = new string[] {"one", "two", "three", "four"};
并查看序列化时的值,这将是您查询的良好起点。
答案 1 :(得分:0)
发现了这个问题。我正在调用Graphs类8次,而不是1次。导致Json的232个字符串。之后我不再需要索引了。