【问题标题】:How to parse a collection of unknown JSON object types inside a known JSON structure using JSON.Net?如何使用 JSON.Net 解析已知 JSON 结构中未知 JSON 对象类型的集合?
【发布时间】:2016-04-07 00:36:55
【问题描述】:

我正在尝试解析一些具有已知顶级架构的 JSON。然而,架构内部是一个 JSON 对象,可以包含各种类型的 JSON 对象。

例子

{
  "knownfield1": data,
  "knownfield2": data,
  "knownfieldcollection":
    {
       "fieldofunknowntype1": "string data",
       "fieldofunknowntype2": 
         {
           "subunknownfield1": "string data",
           "subunknownfield1": null
         },
       "fieldofunknowntype3": null
    }
}

我想创建一个包含已知字段映射的对象,但可以动态读取未知字段。我正在尝试使用 Json.Net JToken 和 JObject,但我无法让它工作。我不断收到递归 JToken 异常。

对此的任何指示都会很棒。谢谢。

我得到的异常:

Type 'Newtonsoft.Json.Linq.JToken' is a recursive collection data 
contract which is not supported. Consider modifying the definition of 
collection 'Newtonsoft.Json.Linq.JToken' to remove references to itself.

--编辑-- 对象的集合类型错误,已修复。

【问题讨论】:

标签: c# json json.net


【解决方案1】:

我们有一个赢家。 DBC 一针见血。我有一些剩余的 WFC 反序列化,它导致了问题。一旦我确定所有的 DataContract 代码都被完全清除并用适当的 JSON.Net 标记和调用替换了所有内容,它就运行得非常好。

感谢大家的支持。

【讨论】:

  • 这并不是问题的真正答案。请编辑相关详细信息,以便此答案可以独立存在。
  • 说实话,不确定您要寻找什么。当我用 JSON.Net 解析代码替换一些左侧的 WFC DataContractJsonDeserializer 代码时,JSON.Net 会按预期进行解析。一旦我这样做了,只需使用 JObject 类型的属性,具有各种未知类型的子级的 JSON 对象就可以完美地解析为对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
相关资源
最近更新 更多