Десериализация Json не удалась - PullRequest
1 голос
/ 09 мая 2019

У меня есть следующая строка json, которую я получаю из вызова API:

"\"{\\r\\n  \\\"Table\\\": [\\r\\n    {\\r\\n      \\\"MaxDate\\\": \\\"2019-06-09T00:00:00\\\",\\r\\n      \\\"MinDate\\\": \\\"2019-01-26T00:00:00\\\"\\r\\n    }\\r\\n  ]\\r\\n}\""

Я хочу десериализовать эту строку в следующую структуру класса

    public class Dates
    {
        public DateTime MaxDate { get; set; }

        public DateTime MinDate { get; set; }
    }

    public class TableResult
    {
        public List<Dates> Table { get; set; }
    }

Когда я пытаюсь десериализовать эту строку json в класс выше, используя Jsonconvert от Newtonsoft,

 JsonConvert.DeserializeObject<TableResult>(result);

выдает исключение

Error converting value "{
  "Table": [
{
  "MaxDate": "2019-06-09T00:00:00",
  "MinDate": "2019-01-26T00:00:00"
}
 ]}" to type 'API_Test.Program+TableResult'. Path '', line 1, position 144.

Я попытался удалить пробелы и \ r \ n из строки, но все равно он выдает исключение и не может десериализоваться.

Может кто-нибудь помочь выяснить, что я не так делаю?

Редактировать 1:

Строка, которую я получаю из API, показана на рисунке ниже: enter image description here

Редактировать 2: Я обновил исходную строку JSON

1 Ответ

1 голос
/ 09 мая 2019

Ваш API возвращает string, который представляет json в виде строки. Итак, сначала вам нужно десериализовать до string, а затем десериализовать это до вашего TableResult

var json = "\"{\\r\\n  \\\"Table\\\": [\\r\\n    {\\r\\n      \\\"MaxDate\\\": \\\"2019-06-09T00:00:00\\\",\\r\\n      \\\"MinDate\\\": \\\"2019-01-26T00:00:00\\\"\\r\\n    }\\r\\n  ]\\r\\n}\"";

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