Verwenden von JsonConvert.DeserializeObject zum Deserialisieren von Json in eine C # POCO-Klasse
Hier ist meine einfacheUser
POCO-Klasse:
/// <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; }
}
Und die Methode, mit der ich eine JSON-Antwort in eine deserialisiereUser
Objekt (dieses tatsächlicheJSON-Aufruf ist hier):
private User LoadUserFromJson(string response)
{
var outObject = JsonConvert.DeserializeObject<User>(response);
return outObject;
}
Dies löst eine Ausnahme aus:
Das aktuelle JSON-Objekt (z. B. {"name": "value"}) kann nicht in den Typ "System.Collections.Generic.List`1 [CoderwallDotNet.Api.Models.Account]" deserialisiert werden, da für den Typ ein JSON-Array erforderlich ist (z. B. [ 1,2,3]) richtig deserialisieren.
Um diesen Fehler zu beheben, ändern Sie entweder JSON in ein JSON-Array (z. B. [1,2,3]) oder den deserialisierten Typ, sodass es sich um einen normalen .NET-Typ handelt (z. B. keinen primitiven Typ wie eine Ganzzahl, keinen Auflistungstyp wie Array oder Liste), die aus einem JSON-Objekt deserialisiert werden können. JsonObjectAttribute kann dem Typ auch hinzugefügt werden, um die Deserialisierung von einem JSON-Objekt zu erzwingen. Pfad 'accounts.github', Zeile 1, Position 129.
Nachdem ich noch nie zuvor mit dieser DeserializeObject-Methode gearbeitet habe, bleibe ich hier irgendwie stecken.
Ich habe sichergestellt, dass die Eigenschaftsnamen in der POCO-Klasse mit den Namen in der JSON-Antwort übereinstimmen.
Was kann ich versuchen, um JSON in dieser POCO-Klasse zu deserialisieren?