Как десерилизовать массив объектов json в c # - PullRequest
0 голосов
/ 30 октября 2018

Привет. Я хочу прочитать идентификатор из объекта JSON, который возвращается из веб-службы:

[{ "ID": 11, "имя пользователя": "test5"}]

Код:

HttpResponseMessage response = null;

using (response = httpClient.PostAsync(url, content).Result)
{
    try
    {
        response.EnsureSuccessStatusCode(); //200 Ok
        string responJsonText = response.Content.ReadAsStringAsync().Result;
        JObject res = JObject.Parse(responJsonText);
       //if ((int)res["id"][0] > 0)
       // {
            var uid = (int)res["id"][0];
            if (uid > 0)
            {
                return uid;
            }
            else
            { return 0; }
       // }
       // else
       //{ return 0; }
    } 

Как я могу прочитать идентификатор и имя пользователя из Json Response, используя C #?

Я получаю исключение со следующим сообщением:

Ошибка чтения JObject из JsonReader. Текущий элемент JsonReader не является объектом: StartArray. Путь

1 Ответ

0 голосов
/ 30 октября 2018

Решение 1 - десериализация в модели C #:

Вы можете создать модель, которая соответствует вашей структуре JSON:

public class User
{
    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("username")]
    public string Username { get; set; }
}

И затем десериализовать строку json, используя пакет Nuget Newtonsoft.Json следующим образом:

string json = @"[{""id"":11,""username"":""test5""}]";
var users = JsonConvert.DeserializeObject<List<User>>(json);

Решение 2 - анализ JSON с помощью JArray

string json = @"[{""id"":11,""username"":""test5""}]";

JArray array = JArray.Parse(json);
int id = array.First["id"].Value<int>();
string username = array.First["username"].Value<string>();

Я предполагаю, что массив будет содержать как минимум 1 элемент, и будут свойства id и username. Должен быть добавлен правильный код обработки ошибок.

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