C# JSON.NET如何创建索引

C# JSON.NET如何创建索引,c#,json.net,C#,Json.net,我的模型中有多个字符串和字符串数组,它们聚集在一个列表中。代码: namespace ReinovaGrafieken.Models { [JsonObject(MemberSerialization.OptIn)] public class Graphs { [JsonProperty] public string Names { get; set; } [JsonProperty] public string[] AnswerHeaders {

我的模型中有多个字符串和字符串数组,它们聚集在一个列表中。代码:

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
但是如果我这样做了,我就不能再使用正确的索引了,因为代码会认为每个名字、应答头等都是一个索引

电流输出:

"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":{  
  "questionName":null,
  "AnswerHeaders":null,
  "AnswersOne":null,
  "AnswersTwo":null,
  "AnswersThree":null,
  "AnswersFour":null,
  "Questions":"Vraag ante 11 & Vraag post 33",
  "AnteOrPost":null
 },
表示
JsonConvert
无法将数组转换为json字符串表示序列化时未填充数组

通过使用演示数据填充字段,确保正确填充json:

AnswerHeaders = new string[] {"one", "two", "three", "four"};
并检查序列化时的值,这将是查询的良好起点

您当前的输出:

"0":{  
  "questionName":null,
  "AnswerHeaders":null,
  "AnswersOne":null,
  "AnswersTwo":null,
  "AnswersThree":null,
  "AnswersFour":null,
  "Questions":"Vraag ante 11 & Vraag post 33",
  "AnteOrPost":null
 },
表示
JsonConvert
无法将数组转换为json字符串表示序列化时未填充数组

通过使用演示数据填充字段,确保正确填充json:

AnswerHeaders = new string[] {"one", "two", "three", "four"};

并检查序列化时的值,这将是查询的良好起点

找到了问题。我给Graphs课打了8次电话,而不是1次。为Json生成232个字符串。之后,我也不必再给索引了。

发现了这个问题。我给Graphs课打了8次电话,而不是1次。为Json生成232个字符串。之后,我也不必再给索引了。

你能分享预期的JSON输出和实际的JSON输出吗?添加了预期和实际的JSON输出。Json应该有29个实例长,但在预期的输出中实际有232个(29*8)长,我想您是想引用字符串值,否则它不是有效的Json,所以这不可能是预期的输出。你能告诉我们序列化的来源吗?请提供一个-我刚刚尝试了你的代码,我得到了我所期望的。现在还不清楚为什么在指定了字符串数组的情况下,您希望得到的结果是一个整数数组。(我想你不需要那么多属性来证明这个问题。)@Kenneth,啊,这是要引用的。你能分享预期的JSON输出和实际的JSON输出吗?添加了预期和实际的JSON输出。Json应该有29个实例长,但在预期的输出中实际有232个(29*8)长,我想您是想引用字符串值,否则它不是有效的Json,所以这不可能是预期的输出。你能告诉我们序列化的来源吗?请提供一个-我刚刚尝试了你的代码,我得到了我所期望的。现在还不清楚为什么在指定了字符串数组的情况下,您希望得到的结果是一个整数数组。(我想你不需要那么多属性来证明这个问题。)@Kenneth,啊ye,这是要引用的。嘿,Barr,如果我告诉我的json忽略null,我可以“正确”填充json。然后我将得到预期的输出,但是我不能再正确地索引它们了。这是不正确的,因为当我在代码中描述的场景发生时,空值出现了。序列化json时,如果没有给定值,或者由于类型误导而无法进行转换,则会出现空值。如果你想在json中保留空值,你只能忽略空值。嘿,巴尔,如果我告诉我的json忽略空值,我可以“正确”填充它。然后我将得到预期的输出,但是我不能再正确地索引它们了。这是不正确的,因为当我在代码中描述的场景发生时,空值出现了。序列化json时,如果没有给定值,或者由于类型误导而无法进行转换,则会出现空值。只有当您希望json中的空值应该被忽略时,才可以忽略空值。