JEST Array response REST API, Ошибка извлечения данных c # - PullRequest
1 голос
/ 07 ноября 2019

Я пытаюсь извлечь из ответа, но при попытке DeserializeObject я получаю следующую ошибку.

Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип 'JSonClasses + Item', поскольку для типа требуется объект JSON (например, {\ "name \": \ "значение \ "}) для правильной десериализации.

Мой ответ:

[{"Odid":45606,"UserId":22728,"FirstName":"FirstName ","MiddleName":null,"LastName":"LastName","UserName":"FirstName.LastName","ExternalEmail":"email@yahoo.com","DefinedId":"12345","UniqueIdentifier":"null","Activation":{"IsActive":true},"DisplayName":"FirstName LastName"}]

Вот как я пытаюсь десериализовать объект этого ответа:

public class Activation
{
    public bool IsActive { get; set; }
}

public class Item
{
    public int OrgId { get; set; }
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
    public string UserName { get; set; }
    public string ExternalEmail { get; set; }
    public string OrgDefinedId { get; set; }
    public string UniqueIdentifier { get; set; }
    public Activation Activation { get; set; }
    public string DisplayName { get; set; }
}


var responceID= JsonConvert.DeserializeObject<JSonClasses.Item>(response.Content);

Я также попытался использовать следующий метод для преобразования его в динамический объект, а затем попытаться извлечь данные в класс Item, но возникает та же ошибка:

dynamic response2 = JsonConvert.DeserializeObject(response.Content); 

Что я делаю неправильно?

1 Ответ

2 голосов
/ 07 ноября 2019

Как говорится в сообщении об ошибке, десериализатор не может десериализовать массив в ваш класс, для которого требуется объект . Ваш JSON-ответ на самом деле является массивом одного объекта и должен быть десериализован как таковой.

Вам необходимо десериализовать ответ в массив или список JsonClasses.Item вместо одного, например:

List<JSonClasses.Item> items = JsonConvert.DeserializeObject<List<JSonClasses.Item>>(response.Content);

В качестве дополнительного примечания существует несоответствие между "Odid" в вашем опубликованном теле ответа и OrgId в вашем классе Предметов, что может привести к сбою десериализации.

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