Użycie JsonConvert.DeserializeObject do deserializacji Json do klasy C # POCO
Oto moja prostaUser
Klasa POCO:
/// <summary>
/// The User class represents a Coderwall User.
/// </summary>
public class User
{
/// <summary>
/// A User's username. eg: "sergiotapia, mrkibbles, matumbo"
/// </summary>
public string Username { get; set; }
/// <summary>
/// A User's name. eg: "Sergio Tapia, John Cosack, Lucy McMillan"
/// </summary>
public string Name { get; set; }
/// <summary>
/// A User's location. eh: "Bolivia, USA, France, Italy"
/// </summary>
public string Location { get; set; }
public int Endorsements { get; set; } //Todo.
public string Team { get; set; } //Todo.
/// <summary>
/// A collection of the User's linked accounts.
/// </summary>
public List<Account> Accounts { get; set; }
/// <summary>
/// A collection of the User's awarded badges.
/// </summary>
public List<Badge> Badges { get; set; }
}
I metodę, której używam do deserializacji odpowiedzi JSON na aUser
obiekt (ten faktycznyPołączenie JSON jest tutaj):
private User LoadUserFromJson(string response)
{
var outObject = JsonConvert.DeserializeObject<User>(response);
return outObject;
}
Wywołuje to wyjątek:
Nie można deserializować bieżącego obiektu JSON (np. {"Name": "value"}) do typu 'System.Collections.Generic.List`1 [CoderwallDotNet.Api.Models.Account]', ponieważ typ wymaga tablicy JSON (np. [ 1,2,3]), aby prawidłowo deserializować.
Aby naprawić ten błąd, zmień JSON na tablicę JSON (np. [1,2,3]) lub zmień deserializowany typ, tak aby był normalnym typem .NET (np. Nie jest typem pierwotnym, jak liczba całkowita, a nie typem kolekcji jak tablica lub lista), które można deserializować z obiektu JSON. JsonObjectAttribute można również dodać do typu, aby wymusić deserializację z obiektu JSON. Ścieżka „accounts.github”, linia 1, pozycja 129.
Nigdy wcześniej nie pracowałem z tą metodą DeserializeObject, więc utknąłem tutaj.
Upewniłem się, że nazwy właściwości w klasie POCO są takie same jak nazwy w odpowiedzi JSON.
Co mogę spróbować deserializować JSON do tej klasy POCO?