使用DataContractJsonSerializer将JSON反序列化为Dictionary

我在响应中收到以下JSON结果:

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

我准备了以下用于反序列化的课程:

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

但是,当我要使用DataContractJsonSerializer对其进行反序列化时, Result属性最终为零条目。 (在将Result声明为Dictionary时也不起作用)

有没有办法用DataContractJsonSerializer执行此操作?

您的JSON字符串表示具有属性Result的对象,该属性本身是具有4个属性的对象:“”,ABC,XYZ和Test。 为了得到KeyValuePairs的列表,JSON看起来像这样:

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

请注意,如果您在Javascript代码中使用关联数组,那么它将被序列化为具有属性 – 值对的对象,而不是对象数组。 如果这是JSON字符串的源,您可能需要切换到使用JS中的普通索引数组来获取正确的JSON。