Dynamic 如何让Json.Net从documentDB序列化/反序列化动态/通用对象而不忽略子进程?

Dynamic 如何让Json.Net从documentDB序列化/反序列化动态/通用对象而不忽略子进程?,dynamic,json.net,azure-cosmosdb,Dynamic,Json.net,Azure Cosmosdb,在documentdb中,我有一些json结构 { "blah": "blahblahblah", "blah": null, "dynamicBlah": { "propertyhere": [ "xyz" ] }, } 在我的c#模型中,它反序列化为 一个对象很好,除了dynamicBlah对象是作为JObject存在的,但是当它作为一个JSONResult返回给客户机(再次序列化)时,该属性就像这样出现 "dynamicBlah

在documentdb中,我有一些json结构

{ "blah": "blahblahblah", 
  "blah": null, 
  "dynamicBlah": {
      "propertyhere": [
        "xyz"
      ]
   }, 
}
在我的c#模型中,它反序列化为 一个对象很好,除了dynamicBlah对象是作为JObject存在的,但是当它作为一个JSONResult返回给客户机(再次序列化)时,该属性就像这样出现

"dynamicBlah": [
    [
        [
             []
        ]
    ]
 ]
有几件事:

  • 该属性的用途只是传递记录中的任何自定义json,因此类型可以是任何类型,因此它必须是动态或对象类型
  • 我不能将其反序列化为字符串,因为某些C#可能需要访问该对象,并且必须不断地将其转换为json并返回,这将是一种痛苦
  • 我知道Json.net可以序列化/反序列化对象和动态,因为我在其他地方做过,没有任何问题。但是,从文档数据库获取它会使序列化程序忽略动态对象的子属性
  • 是的,我试过标记它[JsonProperty]
  • 是的,我试过它作为动态和对象
  • 显然,Json.net认识到其中存在一些问题,因为它输出了多个空级别的Json
  • 当对象既是对象又是集合时,就会发生这种情况
谁能告诉我如何让Json.net不忽略子属性?最终结果应该与documentdb中的json结构相同

更新:

不,把它做成字典是行不通的,因为那只会输入最高级的内容,所以我最终会

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

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

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

将模型中的匿名对象设置为System.Dynamic.ExpandooObject类型可以使反序列化程序正常工作。就这样