これが私の簡単な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呼び出しはここにあります):
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クラスに逆シリアル化するにはどうすればよいですか?