【问题标题】:JSON Array in Newtonsoft using C#使用 C# 在 Newtonsoft 中的 JSON 数组
【发布时间】:2017-03-28 20:33:01
【问题描述】:

我对同时使用 JSON 和 Newtonsoft 很陌生,我正在尝试使用 JArray() 复制这种格式但没有成功。有人对如何实现这一点有任何想法吗?

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

【问题讨论】:

  • 我一直遇到的错误是键相同。
  • 到目前为止你尝试了什么?

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


【解决方案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

【讨论】:

  • 谢谢!我不知道我可以这样使用 JObject。
【解决方案2】:
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' } ] }"
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2020-01-21
    • 2020-07-20
    • 2021-10-13
    • 2017-10-16
    • 1970-01-01
    • 2016-06-16
    相关资源
    最近更新 更多