2017-07-16 43 views
0
"fields": [ 
    { 
     "field": { 
      "name": "SMS", 
      "value": "Yes" 
     } 
    }, 
    { 
     "field": { 
      "name": "Email", 
      "value": "" 
     } 
    }, 
    { 
     "field": { 
      "name": "Total", 
      "value": "" 
     } 
    }, 
] 

我试图形成如上所述的JSON格式,所以我形成了类如下所示。虽然序列化它不返回预期的形式,我怎么能实现这一个。形成JSON对象 - 序列化C#

public class Test 
{ 
    public List<Field> fields; 
} 
public class Field 
{ 
    public string name { get; set; } 
    public string value { get; set; } 
} 

响应:

"fields": [{ 
       "name": "SMS", 
       "value": "Yes" 
      }, { 
       "name": "Email", 
       "value": "" 
      },{ 
       "name": "Total", 
       "value": "" 
      }] 
+0

你反对使用http://www.newtonsoft .COM/JSON? –

+0

我不明白。你是说 - 你有一些输入字符串 - >通过JSON.Net - >序列化到对象数组,这在反序列化不会返回原始字符串。是吗? – RBT

回答

1

您可以使用匿名类型和LINQ自定义生成的JSON对象。请试试这个代码:

var test = new Test {fields = new List<Field>()}; 
test.fields.Add(new Field {name = "f1", value = "v1"}); 
test.fields.Add(new Field {name = "f2", value = "v2"}); 

var json = JObject.FromObject(new { fields = test.fields.Select(f => new {field = f}).ToArray() }) 
    .ToString(); 

一个json变量是:

{ 
    "fields": [ 
    { 
     "field": { 
     "name": "f1", 
     "value": "v1" 
     } 
    }, 
    { 
     "field": { 
     "name": "f2", 
     "value": "v2" 
     } 
    } 
    ] 
} 
+0

这是执行此任务时最难以读懂且效率低下的方法... – Gusman

0

你只是错过了一个类级别:

public class Test 
{ 
    public List<FieldHolder> fields; 
} 

public class FieldHolder 
{ 
    public Field field { get; set; } 
} 

public class Field 
{ 
    public string name { get; set; } 
    public string value { get; set; } 
}