首页 > 解决方案 > 如何反序列化特定的 JSON 对象?

问题描述

我正在尝试序列化我认为是 .NET Core 2.2 应用程序中不寻常的 JSON 结构。

{
    "id": "002a40a1-2e31-4663-a8d0-a4e6e2742d62",
    "data": [
        1,
        [
            "value",
            false
        ]
    ]
}

尝试在 c# 中对数据属性进行建模时,我感到困惑

public class DataItem {
    [JsonProperty("id")]
    string id;

    [JsonProperty("data")]
    public object[] data;
}

我不知道如何在 C# 中正确建模此结构以允许 Newtonsoft 对其进行反序列化。

标签: c#json.net-corejson.net

解决方案


由于它没有结构化格式,我建议您使用dynamic. 或者如果您使用object[],您可以手动迭代每个对象并检查 if 条件内的对象类型。

或者,您可以使用IDictionary<string, JToken>

public class DataItem {
    [JsonProperty("id")]
    string id;

    [JsonProperty("data")]
    public Dictionary<string, JToken> data;
}

推荐阅读