助けてください、私は立ち往生しています。次のようなものを返す WCF サービスがあります。
{
"GetDataRESTResult":
[
{"Key1":100.0000,"Key2":1,"Key3":"Min"},
{"Key1":100.0000,"Key2":2,"Key3":"Max"}
]
}
それをデシリアライズしたいのですが、何を使用しても (JSON.NET または DataContractJsonSerializer)、エラーが発生します。DataContractJsonSerializer を使用する場合、次のコードを使用しています。
byte[] data = Encoding.UTF8.GetBytes(e.Result);
MemoryStream memStream = new MemoryStream(data);
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<DataDC>));
List<DataDC> pricinglist = (List<DataDC>)serializer.ReadObject(memStream);
ここで、DataDC は、JSON データを取得している WCF REST サービスのサービス参照から取得したデータ コントラクトであり、取得しているエラーは InvalidCastException です...
JSON.NET を使用しようとすると、別の例外が発生しますが、まだ何もわかりません。誰か助けてもらえますか?
編集 JSON.NET スタックトレースは次のとおりです。
現在の JSON オブジェクト (例: {"name":"value"}) を型 'System.Collections.Generic.List`1[MyApp.MyServiceReference.DataDC]' に逆シリアル化できません2,3]) 正しく逆シリアル化します。このエラーを修正するには、JSON を JSON 配列 ([1,2,3] など) に変更するか、逆シリアル化された型を通常の .NET 型 (整数のようなプリミティブ型ではなく、コレクション型ではない) に変更します。 JSON オブジェクトから逆シリアル化できる配列またはリスト)。JsonObjectAttribute を型に追加して、強制的に JSON オブジェクトから逆シリアル化することもできます。パス「GetDataRESTResult」、1 行目、位置 23。