反序列化Json - 嵌套参数问题

时间:2017-12-18 12:22:07

标签: c# json

我有以下扩展方法,用于在c#中反序列化json。

    public static T DeserializeJson<T>(string response)
       where T : class
    {
        var s = new DataContractJsonSerializer(typeof(T));

        try
        {
            using (var ms = new MemoryStream())
            {
                byte[] data = System.Text.Encoding.UTF8.GetBytes(response);
                ms.Write(data, 0, data.Length);
                ms.Position = 0;

                return (T)s.ReadObject(ms);
            }
        }
        catch
        {
            return default(T);
        }
    }

这是正常的。

数据合约如下:

[DataContract]
    public class ResponseProps
    {
        [DataMember(Name = "status", Order = 0)]
        public string ResponseCode { get; set; }

        [DataMember(Name = "lead_id", Order=1)]
        public string LeadId { get; set; }

        [DataMember(Name = "price", Order=2)]
        public decimal Price { get; set; }

        [DataMember(Name = "redirect_url", Order = 3)]
        public string RedirectUrl { get; set; }

        [DataMember(Name = "errors", Order = 4)]
        public string Errors { get; set; }
    }

但是在某些情况下我收到错误并且反序列化失败。

问题看起来是由于某些回复中的数据被发回,我显然没有正确处理。以下是导致此问题的数据:

{"status":4,"errors":[{"Duplicate Application":"Duplicate Application"}]}

有人知道我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

ResponseProps.Errors的类型应为List<Dictionary<string, string>>,而不是字符串。