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

问题描述 投票:-1回答:1

我有以下扩展方法,我用它来反序列化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"}]}

任何人都有关于如何解决这个问题的想法?

c# json
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.