如何让 Json.Net 在不忽略子属性的情况下从 documentDB 序列化/反序列化动态/通用对象?
Posted
技术标签:
【中文标题】如何让 Json.Net 在不忽略子属性的情况下从 documentDB 序列化/反序列化动态/通用对象?【英文标题】:How to get Json.Net to serialize / deserialize dynamic / generic object from documentDB without ignoring subprops? 【发布时间】: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 是另一个对象或字符串列表或任何东西时......
【问题讨论】:
【参考方案1】:所以我在这篇文章中找到了答案。
Deserialize Dynamic Json string using Newtonsoft JSON.NET
在我的模型中将匿名对象设为 System.Dynamic.ExpandoObject 类型可以让反序列化器正常工作。就是这样!
【讨论】:
以上是关于如何让 Json.Net 在不忽略子属性的情况下从 documentDB 序列化/反序列化动态/通用对象?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用子进程的情况下从 python 自动化脚本中运行 python 'sdist' 命令?
如何让 GraphQL 在不进行轮询的情况下从数据库中获取实时/新数据?
如何在不使用 ImageView 的情况下从 API 端点下载图像或位图?