RestSharpとIRestResponse<T> response = client.Execute<T>(request)
を使用して、さまざまなJSON構造体をさまざまなC#構造体に動的に移植しています。しかし、ある特定のJSONの結果は私にそれが開始され、ブラケットで終わるトラブルを与える...RestSharpを使用したC#構造体へのJSON配列の逆シリアル化
私のJSONが開始され、「[」と「]」の文字で終わるされています
[
{
"first": "Adam",
"last": "Buzzo"
},
{
"first": "Jeffrey",
"last": "Mosier"
}
]
私はしました作成されたこのクラスの構造:私は私の者型Tに動的にデシリアライズするメソッド内RestSharpを使用
public class Person
{
public string first { get; set; }
public string last { get; set; }
}
public class Persons
{
public List<Person> person { get; set; }
}
...
IRestResponse<T> response = client.Execute<T>(request);
return response;
問題はTが者あるとき、私はclient.Executeライン上でこのエラーが出るということです。
Unable to cast object of type 'RestSharp.JsonArray' to type 'System.Collections.Generic.IDictionary`2[System.String,System.Object]'.
私もJson.Netにしようと、このエラーを得た:
Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'Persons' because the type requires a JSON object (e.g. {\"name\":\"value\"}) to deserialize correctly.
最初の「[」文字があると、リスト人物にデシリアライズを試みました。エラーメッセージが表示されなくなり、「人物」レコードが正しく表示されましたが、それらはすべてnullです。 (私は名前のケーシングが同一であることを確認しました)ターゲットサーバから常に配列の要素が1つしかないので、 "Persons"へのバインディングが "List" 。
このJSONを逆シリアル化してに変換する正しい方法は何ですか?の人はIRestResponse<T> response = client.Execute<T>(request)
という方法論の範囲内にありますか?
に変更し、私は人をオブジェクトとして使用すると、一覧として直接デシリアライズしてはならないと思います。デシリアライザは、生のJSONの例では存在しない "person"というプロパティを見つけようとします。 –
大きな助け、ロベルト!私の外側のリストクラスでさえまだJSONの名前が必要であったという事実は忘れてしまった。 – stackonfire