Эй и спасибо заранее!Deserializing данных JSON (массив) на C# с использованием JSON.NET
Я пытаюсь десериализации WebAPI JSon, но изо всех сил на получение массива (список?)
У меня есть этот JSon от WebAPI, которые я не могу изменить.
{
"Id": "83eb701d-c280-4d39-8333-29e574898b07",
"UserName": "silver",
"Joined": "2015-05-14T18:42:55.14",
"UserListedBookDtos": [
{
"ISBN": "9780553897845",
"Title": "A Game of Thrones",
"Description": "A NEW ORIGINAL SERIES.....",
"Length": 720,
"Author": "George R.R. Martin",
"Status": 0
}
]
}
Теперь я пытаюсь десериализации его с этим:
public static async Task RunAsyncGetUserBooks()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://localhost:44300/");
var response = await client.GetAsync("api/users/"+Login.UsName+"");
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsAsync<UserBooksResponse>();
MessageBox.Show(result.Id);
}
else
{
MessageBox.Show("Something went wrong!");
}
}
}
Для классов я использую эти два:
public class UserListedBookDtos
{
[JsonProperty(PropertyName = "ISBN")]
public int ISBN { get; set; }
[JsonProperty(PropertyName = "Title")]
public string Title { get; set; }
[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "Length")]
public int Length { get; set; }
[JsonProperty(PropertyName = "Author")]
public string Author { get; set; }
[JsonProperty(PropertyName = "Status")]
public int Status { get; set; }
}
public class UserBooksResponse
{
[JsonProperty(PropertyName = "Id")]
public string Id { get; set; }
[JsonProperty(PropertyName = "UserName")]
public string UserName { get; set; }
[JsonProperty(PropertyName = "Joined")]
public string Joined { get; set; }
[JsonProperty(PropertyName = "UserListedBookDtos")]
public IList<UserListedBookDtos> UserListedBookDtos { get; set; }
}
Однако я не могу показаться, чтобы получить какую-либо информацию от сервер, что было когда-либо, когда включена часть списка UserBooksResponse. Однако, если я прокомментирую эту часть:
[JsonProperty(PropertyName = "UserListedBookDtos")]
public IList<UserListedBookDtos> UserListedBookDtos { get; set; }
Я получаю Id, UserName и без проблем. Я довольно новичок в C# и не могу понять, что вызывает это. Я был бы очень признателен всем, кто мог бы либо сообщить мне, почему он не извлекает ничего с сервера, пока список включен, или что мне делать, чтобы получить данные из списка.
UPDATE
Я нашел ответ на мой первый вопрос, как и почему я не извлекаться никакой информации вообще. Это было вызвано тем, что мой ISBN был int, а не строкой, как и должно было быть. Спасибо за отзыв отладчика!
Вы попробовали Список <...>, вместо IList <...>? – javorosas
Также попробуйте прокомментировать каждое из ваших свойств вашего класса UserListedBookDtos, чтобы проверить, действительно ли проблема связана с массивом или только одним свойством класса в массиве – javorosas
. Попробуйте использовать отладчик и шаг за шагом введите свой код проверьте значения – sceiler