如何解析这个json响应

本文关键字:json 响应 何解析 | 更新日期: 2023-09-27 17:58:19

响应的结构如下,这是一个摘录,可能缺少大括号:

{"2":{"date":1306411951,"price":4.8003,"low":"4.80000000","high":"4.80060000","nicedate":"15:12"},"6":{"date":1306418941,"price":4.654175,"low":"4.40000000","high":"4.80000000","nicedate":"17:02"}

在解析响应字符串时,即使对象中的所有数据成员都是字符串,我也会遇到强制转换异常。

我正在使用System。运行时。序列化。Json来反序列化对象。

现在我是这样做的:

        Currency[] MapJSONToObjects(string jsonString)
    {
        using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)))
        {
            //Parse
            var ser = new DataContractJsonSerializer(typeof(Currency[]));
            Currency[] currencies = (Currency[])ser.ReadObject(ms);
            return currencies;
        }
    }

如何解析这个json响应

如前所述,JSON中缺少一个尾随的}。假设您收到的是格式正确且一致的JSON,那么您的Currency类应该如下所示:

[DataContract]
public class Currency
{
    [DataMember(Name = "date")]
    public int Date { get; set; }
    [DataMember(Name = "price")]
    public double Price { get; set; }
    [DataMember(Name = "low")]
    public string Low { get; set; }
    [DataMember(Name = "high")]
    public string High { get; set; }
    [DataMember(Name = "nicedate")]
    public string NiceDate { get; set; }
}

您的反序列化代码看起来不错,不过您可以考虑使用JSON。NET,如果您仍然有问题,如下所述:使用DataContractJsonSerializer 反序列化变量类型JSON数组