如何使用 json.net 将 json 数组添加到 JObject 的属性中

Posted

技术标签:

【中文标题】如何使用 json.net 将 json 数组添加到 JObject 的属性中【英文标题】:How to add a json array into a property of a JObject with json.net 【发布时间】:2013-03-27 07:03:17 【问题描述】:

我很难弄清楚如何将 json 对象数组添加到现有的 JObject。假设我有一个只有“Modified”属性的JObject,并且我想添加另一个包含 json 对象数组的属性“IntersectGroups”,我该怎么做?我有一个JObject[],当我序列化它时,它正是我需要的格式,但我正在寻找这样的东西:mainJObject.Add("IntersectGroups", myJObjectArray)

这是我序列化时想要的最终 json 的示例。

...
"Modified": "2012-11-26T10:21:04.693",
"IntersectGroups": [
  
    "Id": 1004,
    "UserId": 20003,
    "GroupId": 1001,
    "Admin": false,
    "Expires": "1900-01-01T00:00:00"
  ,
  
    "Id": 1003,
    "UserId": 20003,
    "GroupId": 1000,
    "Admin": false,
    "Expires": "1900-01-01T00:00:00"
  
]
...

更新

我的最终解决方案是使用 JArray 对象。 JArray 是一个 JContainer,它是一个 JToken,您可以将它添加到 JObject。我的问题是我试图使用一个 JObject[],它不是一个有效的 JToken

【问题讨论】:

我认为您需要做的就是将对象序列化为字符串,然后将它们连接起来并反序列化为支持它们的类。 我认为这可行,我会试一试,谢谢你的想法 【参考方案1】:

我的最终解决方案是使用JArray 对象。 JArrayJContainer,它是 JToken,您可以将其添加到 JObject。我的问题是我试图使用JObject[],它不是有效的JToken

【讨论】:

【参考方案2】:

查看PopulateObject() 方法,它有一个很好的例子来说明如何做到这一点:

http://james.newtonking.com/projects/json/help/index.html?topic=html/PopulateObject.htm

【讨论】:

似乎这是唯一的方法之一。有点愚蠢的imo,除了首先创建具有兼容数据类型的对象之外,没有其他方法可以做我想做的事,不管感谢挖掘这个。

以上是关于如何使用 json.net 将 json 数组添加到 JObject 的属性中的主要内容,如果未能解决你的问题,请参考以下文章

使用 Json.Net 转换为 XML 时如何序列化空数组

xml转换为json格式时,如何将指定节点转换成数组 Json.NET

如何解析JSON.NET中的匿名数组?

如何将 Dictionary<string,string> 添加到现有 JSON.Net 的 JObject?

JSON.Net 将集合序列化为数组数组

如何使用与 NewtonSoft (JSON.Net) 组件中的 JSON 匹配的 Swift 类从/向 JSON 读取/写入对象数组?