Невозможно десериализовать json с помощью Newsoft. Json - PullRequest
0 голосов
/ 06 августа 2020

У меня есть строка JSON, выдает ошибку, когда я пытаюсь десериализовать ее.

JSON:

[
    [
        {
            "fieldNameFK": 5
           
        }
    ],
    [
        {
            "fieldNameFK": 6
            
        }
    ]
]

Class :

public class Root
{
    public List<List<Test>> Test{ get; set; }
}

public class Test
{
  
    public int FieldNameFK { get; set; }

}

Код для десериализации

var response = JsonConvert.DeserializeObject<Root>(jsonStr);

Исключение :

Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип 'ConsoleApp1.Program + Root', потому что для правильной десериализации типу требуется объект JSON (например, {"name": "value"}) . Чтобы исправить эту ошибку, либо измените JSON на объект JSON (например, {"name": "value"}) или измените десериализованный тип на массив или тип, реализующий интерфейс коллекции (например, ICollection, IList) например List, который можно десериализовать из массива JSON. JsonArrayAttribute также может быть добавлен к типу, чтобы заставить его десериализоваться из массива JSON. Путь '', строка 1, позиция 1.

Я также упомянул это и это решение, но оно не помогло.

1 Ответ

3 голосов
/ 06 августа 2020

У вас есть массив json на вашем root, а не json объект, поэтому вам нужно десериализовать в коллекцию, а не в объект:

var response = JsonConvert.DeserializeObject<List<List<Test>>>(jsonStr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...