如何使用可变数量的字符串反序列化JSON对象?

时间:2019-06-28 14:22:16

标签: c# json deserialization

下面,我有一个JSON,其中详述了一系列对象,每个对象都有一个values属性。

values属性也是一个对象,但是每个values对象可以包含任意数量的字符串:

{
    "data": [
        {
            "name": "xxxx",
            "values": {
                "one": "xxxx",
                "two": false
            }
        },
        {
            "name": "xxyy",
            "values": {
                "three": "xxyy",
                "four": 1.25,
                "five": "xxyy"
            }
        },
        {
            "name": "xxyy",
            "values": {
                "six": "xxyy",
                "seven": "xxyyy",
                "eight": "xxyy",
                "nine": 1234,
                "ten": 0
            }
        }
    ]
}

是否有一种方法可以反序列化此JSON对象,以便无论该values对象具有多少个属性,都可以填充values对象?

我正在使用C#Newtonsoft.Json反序列化。

1 个答案:

答案 0 :(得分:2)

以下两个对象可用于正确反序列化JSON:

public class AllData
{
    public Item[] Data { get; set; }
}

public class Item
{
    public string Name { get; set; }
    public IDictionary<string, object> Values { get; set; }
}

然后可以使用以下几行实际进行反序列化:

string json = /*json*/;
AllData data = JsonConvert.DeserializeObject<AllData>(json);