Проблема десериализации JSON в объект - PullRequest
2 голосов
/ 28 сентября 2011

Переполнение стека:

Я использую JSON.NET и раньше делал это успешно, однако сейчас я сталкиваюсь с неприятным кусочком JSON, который, похоже, не могу десериализовать. Очевидно, проблема заключается в том, как создается класс, и поэтому я прошу кого-нибудь помочь мне спланировать класс, в который JSON.NET может успешно десериализоваться.

Вот структура строки JSON:

[
    {
        "name":"",
        "cost":"",
        "cmc":"",
        "loyalty":"",
        "supertype":"",
        "type":"",
        "subtype":"",
        "power":"",
        "toughness":"",
        "hand":"",
        "life":"",
        "rule":"",
        "multi":"",
        "set":
        [   // Note: there could be an infinite number of sets
            {
                "setcode":"",
                "rarity":"",
                "number":"",
                "artist":"",
                "flavor":""
            },
            {   "setcode":"",
                "rarity":"",
                "number":"",
                "artist":"",
                "flavor":""
            },
        ]
    }
]

Большое спасибо, переполнение стека

1 Ответ

2 голосов
/ 28 сентября 2011

Вы хотите иметь класс со свойствами для всех этих имен. Когда дело доходит до массива, это действительно массив объектов, поэтому вам нужно создать другой класс с такими же именованными свойствами. Что-то вроде:

public class MainObject
{
    public string name { get;set; }
    // rest of the names as properties
    public List<SetObject> @set { get;set; }

}

public class SetObject
{
    public string setcode { get;set; }
    // rest of your sets names as properties
}

Кроме того, из вашего JSON похоже, что это уже массив, поэтому вы захотите десериализовать его как массив:

var objects = JsonConvert.DeserializeObject<MainObject[]>(/* your json here */);

Это даст вам массив вашего десериализованного MainObject, так же как ваш JSON является массивом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...