JSON.NET如何创建索引

时间:2018-03-19 11:45:56

标签: c# json.net

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

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"
},

2 个答案:

答案 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个字符串。之后我不再需要索引了。