13

応答で次の JSON 結果を受け取ります。

{"result": { "":-41.41, "ABC":0.07, "XYZ":0.00, "Test":0.00 }}

逆シリアル化用に次のクラスを用意しました。

[DataContract]
public sealed class RpcResponse
{
    [DataMember(Name = "result")]
    public List<KeyValuePair<string, decimal>> Result { get; set; }
}

DataContractJsonSerializerただし、プロパティで逆シリアル化しようとすると、Resultエントリがゼロになります。Result( asと宣言した場合も動作しませんDictionary<string, decimal>)

でこれを実行する方法はありDataContractJsonSerializerますか?

4

1 に答える 1

0

JSON 文字列は、それ自体が「」、ABC、XYZ、および Test の 4 つのプロパティを持つオブジェクトであるプロパティ Result を持つオブジェクトを表します。結果が KeyValuePairs のリストになるようにするには、JSON は次のようになります。

{"result": [{ "":-41.41}, {"ABC":0.07}, {"XYZ":0.00}, {"Test":0.00 }] }

Javascript コードで連想配列を使用している場合は、オブジェクトの配列としてではなく、プロパティと値のペアを持つオブジェクトとしてシリアル化されることに注意してください。それが JSON 文字列のソースである場合、適切な JSON を取得するために、JS で通常のインデックス付き配列の使用に切り替える必要がある場合があります。

于 2013-02-20T13:55:18.933 に答える