Как десериализовать объекты JSON с переменным количеством строк? - PullRequest
1 голос
/ 28 июня 2019

Ниже у меня есть 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 Ответ

2 голосов
/ 28 июня 2019

Следующие два объекта могут быть использованы для правильной десериализации 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);
...