【发布时间】:2012-06-22 23:37:22
【问题描述】:
这是我的简单User 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; }
}
我用来将 JSON 响应反序列化为 User 对象的方法(这个实际的 JSON call is here):
private User LoadUserFromJson(string response)
{
var outObject = JsonConvert.DeserializeObject<User>(response);
return outObject;
}
这会引发异常:
无法反序列化当前 JSON 对象(例如 {"name":"value"}) 输入类型 'System.Collections.Generic.List`1[CoderwallDotNet.Api.Models.Account]' 因为该类型需要一个 JSON 数组(例如 [1,2,3])来反序列化 正确。
要修复此错误,请将 JSON 更改为 JSON 数组 (例如 [1,2,3])或更改反序列化类型,使其成为正常的 .NET 类型(例如,不是像整数这样的原始类型,也不是集合 可以从 JSON 反序列化的数组或列表等类型 目的。 JsonObjectAttribute 也可以添加到类型中来强制它 从 JSON 对象反序列化。路径“accounts.github”,第 1 行, 位置 129。
以前从未使用过这种 DeserializeObject 方法,我有点卡在这里。
我已确保 POCO 类中的属性名称与 JSON 响应中的名称相同。
我可以尝试将 JSON 反序列化到这个 POCO 类中吗?
【问题讨论】:
-
看来我来晚了,但请看我的回答。使用
JsonProperty比编写JsonConverter更容易(并且可读) -
那么您可能正在查看类似的内容。 stackoverflow.com/questions/25672338/…
标签: c# json serialization json.net poco