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

如何在C#中添加每个json对象的父节点?,c#,json,C#,Json,我对JSON解析和很多方法都是新手,但这里只是给出我的预期输出。如果您可以帮助或忽略这一点 我选择了一个具有以下属性的模型 [JsonProperty(PropertyName="add-field")] public string addfield { get; set; }="{"; public string name { get; set; } public string type { get; set; } public string indexed { get

我对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; }
然后在序列化模型对象之后,我得到了下面的json对象

{add-field": "{",
    "name": "ID",
    "type": "string",
    "indexed": "true",
    "stored": "true"
  },` {
    "add-field": "{",
    "name": "Address",
    "type": "string",
    "indexed": "true",
    "stored": "true"
  }
}
但我想将其转换为以下api格式:

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

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

我怎么能做到这一点呢?欢迎任何建议。

JSON代表JavaSscriptOobjectNotation,这意味着JSON是由对象组成的

在JS中,对象可以定义为

object:{
    field1:value1,
    field2:value2,
}
有点像C#对象初始化

new Object{
    Field1 = value1,
    Field2 = value2,
};
请注意,在这两个中,根都是对象,因为括号内的内容都是属性。所以如果你想

"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; }
} 
{
    "add-fields":[
    {
        "name":"ID",
        "type":"string",
        "stored":true },
    {
        "name":"I",
        "type":"string",
        "stored":true },
    {
         "name":"Address",
         "type":"string",
         "stored":true }
    ]
}
警惕

您展示的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 }
}
不起作用,正确的方法是使用数组,如下所示:

public class Add-Field {
     public string name { get; set; }
     public string type { get; set; }
     public string indexed { get; set; }
     public string stored { get; set; }
} 
{
    "add-fields":[
    {
        "name":"ID",
        "type":"string",
        "stored":true },
    {
        "name":"I",
        "type":"string",
        "stored":true },
    {
         "name":"Address",
         "type":"string",
         "stored":true }
    ]
}


它需要
公共列表添加字段{get;set;}

“添加字段”应该是类型而不是字符串。应该是什么类型的?你是说列表还是数组?@puropoixno,type==class。你确定它的某些部分周围没有方括号吗?将
addfield
定义为一个字符串并为其分配“{”并不是你所想的那样。
“{
{
不同。是的,序列化后有方括号,我已经删除了,因为我需要以下格式来调用api。{“addfield”:{“name”:“ID”,“type”:“string”,“stored”:true},“add field”:{“name”:“I”,“type”:“string”,“stored”:true},“add field”:{“name”:“Address”,“type”:“string”,“stored”:true}}我的意思是如果API的json中应该有方括号。请注意,您显示为您需要/想要它的json是无效的json,因为“add field”重复“钥匙。谢谢@J.Pichardo。我会尽量让你知道的。