【问题标题】:How to get Json.Net to serialize / deserialize dynamic / generic object from documentDB without ignoring subprops?如何让 Json.Net 在不忽略子属性的情况下从 documentDB 序列化/反序列化动态/通用对象?
【发布时间】:2016-05-11 21:31:42
【问题描述】:

在 documentdb 中,我有一些 json 结构。

{ "blah": "blahblahblah", 
  "blah": null, 
  "dynamicBlah": {
      "propertyhere": [
        "xyz"
      ]
   }, 
}

在我的 c# 模型中,它反序列化为 一个对象很好,除了 dynamicBlah 对象作为 JObject 存在,但是当它作为 JSONResult 返回给客户端(再次序列化)时,该属性就像这样出来......

"dynamicBlah": [
    [
        [
             []
        ]
    ]
 ]

一些事情:

  • 该属性的用途只是传递记录中的任何自定义 json,因此类型可以是任何类型,因此它必须是动态或对象类型。
  • 我不能只是将其反序列化为字符串,因为某些 C# 可能需要访问该对象,并且必须不断将其转换为 json 并返回,这会很痛苦
  • 我知道 Json.net 可以序列化/反序列化对象和动态,因为我已经在其他地方完成了它,没有任何问题。但是,从文档 db 中获取它会导致序列化程序忽略动态的子属性。
  • 是的,我已经尝试标记它 [JsonProperty]
  • 是的,我已经将它作为动态和对象进行了尝试
  • Json.net 显然认识到那里有东西,因为它输出了多个空级别的 json。
  • 当对象既是对象又是集合时会发生这种情况

谁能告诉我如何让 Json.net 不忽略子属性?最终结果应该是与 documentdb 中相同的 json 结构。

更新:

不让它成为字典不起作用,因为它只输入顶级,所以我最终得到 ​​p>

"dynamicBlah": {"xyz": [
        []
    ]
}

当 xyz 是另一个对象或字符串列表或任何东西时......

【问题讨论】:

    标签: dynamic json.net azure-cosmosdb


    【解决方案1】:

    所以我在这篇文章中找到了答案。

    Deserialize Dynamic Json string using Newtonsoft JSON.NET

    在我的模型中将匿名对象设为 System.Dynamic.ExpandoObject 类型可以让反序列化器正常工作。就是这样!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-20
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      相关资源
      最近更新 更多