c# - 使用 C# 反序列化一些奇怪的 JSON

标签 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”的属性。据供应商称,数据的值(value)是“匿名的”。所以,基本上它可以是任何东西。

当涉及到文档的这些部分时,关于将其反序列化为自定义对象的最佳方法有什么想法吗?谢谢。

最佳答案

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

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

关于c# - 使用 C# 反序列化一些奇怪的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41881719/

相关文章:

c# - UI 上的多线程 WPF

javascript - 将变量传递给 Json API 并使用 ng-repeat 显示响应

java - jackson :在自定义字段 JsonDeserializer 中获取整个对象

c# - 我可以在没有安装 Visual Studio 的 Windows 服务器上构建 .NET Core 应用程序吗?

c# - 基于服务的数据库

javascript - JavaScript、AJAX 代码显示数据有问题

sql - Postgres - 查询具有多对多关系的表

java - 如何使用 Jackson 将 Color java 类解析为 JSON?

c# - json 牛顿软件 : Deserialize Object containing a list of string

c# - RunWorkerCompleted 未在主 UI 线程中执行?