Aquí está mi clase simple User
POCO:JsonConvert.DeserializeObject deserializar JSON para una clase C# 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; }
}
Y el método que estoy usando para deserializar una respuesta JSON en un objeto User
(este real JSON call is here):
private User LoadUserFromJson(string response)
{
var outObject = JsonConvert.DeserializeObject<User>(response);
return outObject;
}
Esto dispara una excepción:
No se puede deserializar el objeto JSON actual (p. {"name": "value"}) en el tipo 'System.Collections.Generic.List`1 [CoderwallDotNet.Api.Models.Account]' porque el tipo requiere una matriz JSON (por ejemplo, [1,2,3] ]) para deserializar correctamente.
Para corregir este error ya sea cambiar el JSON a una matriz JSON (por ejemplo, [1,2,3]) o cambiar el tipo deserializado de modo que es una normal de tipo de .NET (por ejemplo, no un tipo primitivo como número entero , no una colección escriba como una matriz o Lista) que se puede deserializar desde un objeto JSON . JsonObjectAttribute también se puede agregar al tipo para forzarlo a para deserializar desde un objeto JSON. Path 'accounts.github', la línea 1, posición 129.
Como nunca había trabajado con este método DeserializeObject antes, estoy un poco atascado aquí.
Me he asegurado de que los nombres de las propiedades en la clase POCO sean los mismos que los nombres en la respuesta JSON.
¿Qué puedo intentar deserializar a JSON en esta clase de POCO?
Parece que llego tarde, pero veo mi respuesta. usar 'JsonProperty' es mucho más fácil (y legible) que escribir' JsonConverter' –
Probablemente estés viendo algo así entonces. http://stackoverflow.com/questions/25672338/dynamically-deserialize-json-into-any-object-passed-in-c-sharp – Jim