我有一个来自供应商的 JSON 文档,如下所示:
{
"content": [{
"name": "Windows 8.1 x64",
"id": "Windows81x64",
"components": {
"Windows81x64": {
"propertyGroups": ["VirtualWindows81x64"],
"dependsOn": [],
"data": {
"provisioning_workflow": {
"fixed": {
"id": "WIMImageWorkflow",
"label": "WIMImageWorkflow"
}
},
"memory": {
"default": 2048,
"min": 2048,
"max": 16384
}
}
}
}
}]
}
本文档的大部分内容很容易使用典型的 DataContractSerializer 反序列化为对象,但是,有几个键/值我不确定“最佳实践”可能是什么。
如果您查看“组件”键,则该键之后的第一个键的标题为“Windows81x64”。该键可以随文档的不同而变化,并且可以是任何值。它几乎应该是集合的“名称”属性,但我无法控制它。此外,在“Windows81x64”键内还有另一个名为“data”的属性。据供应商称,数据的值(value)是“匿名的”。所以,基本上它可以是任何东西。
当涉及到文档的这些部分时,关于将其反序列化为自定义对象的最佳方法有什么想法吗?谢谢。
最佳答案
您可以将动态反序列化为 Dictionary<string, object>
或者,如果您知道值的类型,则可以使用 Dictionary<string, ValueType>
其中字典的键是名称(在您的情况下 Windows81x64
)
关于c# - 使用 C# 反序列化一些奇怪的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41881719/