Извлечение данных из класса Collection - PullRequest
2 голосов
/ 27 сентября 2019

У меня есть вызов API, который возвращает ответ JSON: Ответ JSON:

{
    "Errors":
    [
        {"Message":"The username supplied is invalid or already in use. Please choose a different username."}
    ]
}

Мои классы:

public class Error
{
    public string Message { get; set; }
}

public class ErrorCollector
{
    public List<Error> Errors { get; set; }
}

Что я хотел бы сделать, это извлечь сообщение только изэтот JSON Response, но когда я пытаюсь извлечь данные, у меня нет опции Message, вот мой код для сбора данных из JSON Response.

var thisasa3 = JsonConvert.DeserializeObject<JSonClasses.ErrorCollect>(response.Content);
string Responsess = thisasa3.Errors. //<< No opntion for Message

Что я делаю неправильно?Я также пытался изменить список на ILIST, но ничего не вышло.

Ответы [ 2 ]

3 голосов
/ 27 сентября 2019

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

Примерно так:

var thisasa3 = JsonConvert.DeserializeObject<JSonClasses.ErrorCollect>(response.Content);
var response = thisasa3.Errors[0].Message;
2 голосов
/ 27 сентября 2019

Errors это коллекция List<Error> Errors.Вам нужно перебрать все ошибки, чтобы получить сообщения внутри.Например:

string Responsess = thisasa3.Errors;
var messages = string.Empty;
foreach (var error in Responsess.Errors)
{
    messages += $"{error.Message} ";
}

Или просто с помощью string.Join():

// all messages
string messages = string,Join(", ", thisasa3.Errors);

Если вы хотите только первую ошибку, или есть только одна, то:

// first message
string message = thisasa3.Errors?[0].Message;

Или используя System.Linq:

// first message
string message = thisasa3.Errors.FirstOrDefault()?.Message;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...