Dynamic 如何让Json.Net从documentDB序列化/反序列化动态/通用对象而不忽略子进程?
在documentdb中,我有一些json结构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
{ "blah": "blahblahblah",
"blah": null,
"dynamicBlah": {
"propertyhere": [
"xyz"
]
},
}
在我的c#模型中,它反序列化为
一个对象很好,除了dynamicBlah对象是作为JObject存在的,但是当它作为一个JSONResult返回给客户机(再次序列化)时,该属性就像这样出现
"dynamicBlah": [
[
[
[]
]
]
]
有几件事:
- 该属性的用途只是传递记录中的任何自定义json,因此类型可以是任何类型,因此它必须是动态或对象类型
- 我不能将其反序列化为字符串,因为某些C#可能需要访问该对象,并且必须不断地将其转换为json并返回,这将是一种痛苦
- 我知道Json.net可以序列化/反序列化对象和动态,因为我在其他地方做过,没有任何问题。但是,从文档数据库获取它会使序列化程序忽略动态对象的子属性
- 是的,我试过标记它[JsonProperty]
- 是的,我试过它作为动态和对象
- 显然,Json.net认识到其中存在一些问题,因为它输出了多个空级别的Json李>
- 当对象既是对象又是集合时,就会发生这种情况
"dynamicBlah": {"xyz": [
[]
]
}
当xyz是另一个对象或字符串列表或任何东西时…所以我在这篇文章中找到了答案 将模型中的匿名对象设置为System.Dynamic.ExpandooObject类型可以使反序列化程序正常工作。就这样