如何在C#中添加每个json对象的父节点?

时间:2017-01-16 19:35:25

标签: c# json

我是JSON解析的新手,并且很多方式,但这里只是提供我预期的输出。如果你可以提供帮助或者可以忽略它。

我拿了一个带有以下属性的模型。

required

然后在序列化模型对象之后我得到了以下的json对象

[JsonProperty(PropertyName="add-field")]
   public string addfield { get; set; }="{";
   public string name { get; set; }
   public string type { get; set; }
   public string indexed { get; set; }
   public string stored { get; set; }

但是我想把它变成api格式的以下格式:

{add-field": "{",
    "name": "ID",
    "type": "string",
    "indexed": "true",
    "stored": "true"
  },` {
    "add-field": "{",
    "name": "Address",
    "type": "string",
    "indexed": "true",
    "stored": "true"
  }
}

我怎么能这样做?感谢任何建议。

1 个答案:

答案 0 :(得分:0)

JSON代表 J ava S crpt O bject N \ totation,这意味着组成了JSON通过对象

在JS中,对象可以定义为

object:{
    field1:value1,
    field2:value2,
}

有点像C#对象初始化

new Object{
    Field1 = value1,
    Field2 = value2,
};

请注意, root是一个对象,因为括号内的任何内容都是属性。所以,如果你想要

"add-field":{
    "name":"ID",
    "type":"string",
    "stored":true 
}

你需要这样的东西:

public class Add-Field {
     public string name { get; set; }
     public string type { get; set; }
     public string indexed { get; set; }
     public string stored { get; set; }
} 

<强> WATCHOUT

你提出的JSON:

{"add-field":{
     "name":"ID",
     "type":"string",
     "stored":true },
     "add-field":{
     "name":"I",
     "type":"string",
     "stored":true },

 "add-field":{
     "name":"Address",
     "type":"string",
     "stored":true }
}

无法正常工作,正确的方法是使用数组,如下所示:

{
    "add-fields":[
    {
        "name":"ID",
        "type":"string",
        "stored":true },
    {
        "name":"I",
        "type":"string",
        "stored":true },
    {
         "name":"Address",
         "type":"string",
         "stored":true }
    ]
}

或者

[
   {
       "name":"ID",
       "type":"string",
       "stored":true },
   {
       "name":"I",
       "type":"string",
       "stored":true },
   {
       "name":"Address",
       "type":"string",
       "stored":true }
]

哪个需要public List<Add-Field> add-fields {get;set;}