使用C#在Newtonsoft中使用JSON数组

时间:2017-03-28 20:33:02

标签: c# asp.net json json.net

我很擅长将JSON和Newtonsoft一起使用,我试图使用JArray()成功复制这种格式而没有成功。有没有人对如何实现这一点有任何想法?

   "attrList":[
      {
         "name":"Attendee Status",
         "val":"Accepted"
      },
      {
         "name":"Attendee Type",
         "val":"Attendee"
      }
   ]

2 个答案:

答案 0 :(得分:1)

使用手动JArray创建,您可以按以下方式执行此操作:

var root = new JObject
(
    new JProperty("attrList",
        new JArray
        (
            new JObject
            (
                new JProperty("name", "Attendee Status"),
                new JProperty("val", "Accepted")
            ),                  
            new JObject
            (
                new JProperty("name", "Attendee Type"),
                new JProperty("val", "Attendee")
            )
        )
    )
);

你写了我一直遇到的错误是键是相同的,所以你可能会做这样的事情:

var root = new JObject
(
    new JProperty("attrList",
        new JArray
        (
            new JObject
            (
                new JProperty("name", "Attendee Status"),
                new JProperty("val", "Accepted"),
                new JProperty("name", "Attendee Type"),
                new JProperty("val", "Attendee")
            )
        )
    )
);

请注意,只创建了一个内部对象而不是两个?如果您忘记分配两个对象,最终会尝试将属性"name""val"添加两次,从而重现问题。

示例fiddle

另见Creating JSON: Manually Creating JSON

答案 1 :(得分:0)

public class Parent
{
    public List<Attribute> attrList{ get; set; }
}

public class Attribute
{
    public string name{ get; set; }
    public string val{ get; set; }
}

var parsedParent = JsonConvert.DeserializeObject<Parent>(
   "{ 'attrList':[ { 'name':'Attendee Status', 'val':'Accepted' }, { 'name':'Attendee Type', 'val':'Attendee' } ] }"
);