Чтение ответа JSON в виде списка объектов

Я пытаюсь получить список объектов из cors API, но все записи списка имеют значение null.

Мне удалось получить список (тип и длина списка в порядке).

List<PluginModelDB> result;

using (HttpResponseMessage response = await ApiBroker.ApiClient.GetAsync(""))
{
    if (response.IsSuccessStatusCode)
    {
        result = await response.Content.ReadAsAsync<List<PluginModelDB>>();
    }
    else
    {
        throw new Exception(response.ReasonPhrase);
    }
}

HomeViewModel.PluginList = new List<PluginModelDB>();

foreach (var p in result)
{
     HomeViewModel.PluginList.Add(new PluginModelDB { ID = p.ID, Name = p.Name, Description = p.Description});
}

возможно, он не может правильно десериализоваться. какова ценность result?

Rahul 05.07.2019 09:51

это список, содержащий 2 пустых объекта PluginModelDB

Mateusz Fijak 05.07.2019 09:54

@MateuszFijak публикует код, который фактически десериализует строку JSON и саму строку. В ASP.NET Core нет ReadAsAsync, откуда он взялся? Не зная, как выглядят строка и классы, единственный возможный совет — просто прочитать строку и использовать JSON.NET для ее десериализации.

Panagiotis Kanavos 05.07.2019 10:11

От ВладаксЛе: It seems that your model is not corresponds to received JSON. You can check you model via http://json2csharp.com/

Panagiotis Kanavos 05.07.2019 10:12

@MateuszFijak, пожалуйста, прочтите Как задать хороший вопрос? и Как создать минимальный воспроизводимый пример

Panagiotis Kanavos 05.07.2019 10:15

@MateuszFijak, если вы считаете, что сообщество виновато, подумайте, как отреагирует преподаватель (или сокурсники), если вы зададите им вопрос, в котором отсутствует важная информация или какая-либо полезная информация, а затем поблагодарите парня, который скопировано ответил.

Panagiotis Kanavos 05.07.2019 11:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
947
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте сначала прочитать его как строку, поэтому не десериализуйте его сразу. Выведите эту строку в консоль или простой текстовый файл и посмотрите, сможете ли вы отслеживать там свои элементы. Если нет, проблема в API, который возвращает пустые объекты.

@MateuszFijak вы пропустили важный код. В ASP.NET Core нет ни ApiBroker, ни ReadAsAsync. Раньше был устаревший пакет System.Net.Http.Форматирование с этим методом.

Panagiotis Kanavos 05.07.2019 10:06

похоже, что API работает неправильно: [{"plugin":null},{"plugin":null}]

Mateusz Fijak 05.07.2019 10:07

да, у меня была ошибка в API, на самом деле у меня была модель БД и пользовательского интерфейса, и их имена не совпадали, поэтому они не совпадали с именами JSON, спасибо за подсказку.

Mateusz Fijak 05.07.2019 10:10
Ответ принят как подходящий

Похоже, ваша модель не соответствует полученному JSON. Вы можете проверить свою модель через http://json2csharp.com/

Это действительно комментарий, а не ответ. Немного больше повторений, вы сможете оставлять комментарии.

Adriaan 05.07.2019 10:07

Это действительно комментарий, а не ответ. Немного больше повторений, вы сможете оставлять комментарии. На данный момент я добавил комментарий для вас, и я помечаю этот пост для удаления.

Panagiotis Kanavos 05.07.2019 10:12

это было, у меня было 2 модели одного и того же, и я столкнулся с несоответствием имени

Mateusz Fijak 05.07.2019 10:13

@MateuszFijak нет, не было. Обновите вопрос. Добавьте классы и строку JSON. Вопрос плохой сам по себе, и это не ответ. На самом деле ответ разное намного лучше.

Panagiotis Kanavos 05.07.2019 10:14

не совсем. лучше получить небольшую подсказку, а остальное понять самому, чем получить полный ответ ;)

Mateusz Fijak 05.07.2019 10:15

@MateuszFijak делает это комментарием, а не ответом. SO — это сайт вопросов и ответов, а не дискуссионный форум.

Panagiotis Kanavos 05.07.2019 10:18

Другие вопросы по теме