使用C#

时间:2017-01-26 19:48:03

标签: c# json json-deserialization

我有一个来自供应商的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”的属性。根据供应商的说法,数据的价值是“匿名的”。所以,基本上它可以是任何东西。

关于在文档的这些部分中将其反序列化为自定义对象的最佳方法的任何想法?谢谢。

1 个答案:

答案 0 :(得分:2)

您可以将动态序列反序列化为Dictionary<string, object>

或者,如果您知道值的类型,则可以使用Dictionary<string, ValueType>,其中字典的键将是名称(在您的情况下为Windows81x64