JSON.net проблема с JsonConvert.DeserializeObject - PullRequest
4 голосов
/ 12 октября 2009

У меня есть следующий код и JSON:

public class Labels
{
    public Labels()
    {}

    public Label[] Label {get;set;}
}

public class Label
{
    public Label()
    { }
    public string Name { get; set; }
    public int TorrentsInLabel { get; set; }
}

//...
Labels o = JsonConvert.DeserializeObject<Labels>(json);
//...


{"label": 
[
  ["seq1",1]
  ,["seq2",2]
]}

Я бы хотел, чтобы этот массив ["seq1", "1"] десериализовался в объект Label. Что мне не хватает? Некоторые атрибуты?

Когда я запускаю, я получаю исключение: ожидал JsonArrayContract для типа 'test_JSONNET.Label', получил 'Newtonsoft.Json.Serialization.JsonObjectContract'.

Тпй

1010 * гг *

Ответы [ 2 ]

3 голосов
/ 12 октября 2009

Как JsonConvert может знать, что «seq1» соответствует имени, а «1» соответствует TorrentsInLabel? Пожалуйста, посмотрите на JsonObjectAttribute, JsonPropertyAttribute, JsonArrayAttribute

2 голосов
/ 17 октября 2009

По умолчанию класс сериализуется в объект JSON, где свойства класса становятся свойствами объекта JSON.

{
    Name: "seq",
    TorrentsInLabel: 1
}

Вы пытаетесь сериализовать его в массив, который по умолчанию работает не так, как сериализатор Json.NET.

Чтобы получить то, что вам нужно, вы должны создать JsonConverter, вручную прочитать и написать JSON for Label, чтобы он был тем, чем вы хотите (массив).

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