サードパーティの API を呼び出して単一クラスのデータを取得できる場合、このコードを使用してすべてが正常にデシリアライズされます
TheUser me = jsonSerializer.Deserialize(response, typeof(TheUser)) as TheUser
次のような配列である JSON 応答コンテンツを逆シリアル化しようとすると、問題が発生します。
{
"data": [
{
"name": "A Jones",
"id": "500015763"
},
{
"name": "B Smith",
"id": "504986213"
},
{
"name": "C Brown",
"id": "509034361"
}
]
}
「データ」メンバーの周りにカスタムラッピングクラスを使用し、そのメンバーがタイプである必要がある場合にのみ、シリアライゼーションを機能させることができますList<object>
。タイプとしてそれらがある場合、メソッドからList<TheUser>
取得します。ArgumentException
JsonParser DesializeType
本来はこんな感じでラッピングの型抜きで連載しようと思っていたのですが
List<TheUser> freinds = jsonSerializer.Deserialize(response, typeof(List<TheUser>)) as List<TheUser>;
しかし、それは空のコレクションを返すだけです。確かに、配列を厳密に型指定されたリストに逆シリアル化できる必要があります。