反序列化不同数据时出现问题



我正在使用Json.net JsonConvert从其余的API反序列化一些Json,方式如下:

WebRequest request = WebRequest.Create(url);
        WebResponse ws = request.GetResponse();
          using (StreamReader sr = new StreamReader(ws.GetResponseStream()))
    {
        jsonString = sr.ReadToEnd();
    }
    RootObject root = JsonConvert.DeserializeObject<RootObject>(jsonString);

这非常有效,预计在尝试获取特定的数据集时,当重新初始化时会产生以下错误:

Error reading string. Unexpected token: StartObject. Path

我已经将问题缩小到API以不正确的格式返回某些条目的数据。所以大多数返回的数据看起来是这样的:

   Income: {
    currency: {
        GBP: "48",
        USD: "32",
        EUR: "40"
    }
}, 

然而,在某些情况下,它正在返回:

income: {
    currency: {
        GBP: {
        GBP: "0",
        USD: "0",
        EUR: "0"
    },
    USD: {
        GBP: "0",
        USD: "0",
        EUR: "0"
    },
    EUR: {
        GBP: "0",
        USD: "0",
    EUR: "0"
    }
}

在短期内,我无法修复API,所以我需要以某种方式处理它,但我对使用Json.net相对较新,所以我不确定最好的方法。任何建议都将不胜感激。

我试图将其分解为一个非常简单的类结构:

  public class RootObject
    {
        public List<Income> Income_list { get; set; }
    }
 public class Income
    {
        public Currency currency { get; set; }
    }
    public class Currency
    {
        public string GBP { get; set; }
        public string USD { get; set; }
        public string EUR { get; set; }
    }

假设无效的JSON的货币值为零,那么简单地捕获JSON反序列化异常并返回一个新的Income对象及其初始化为全零的Currency对象可能会容易得多。

相关内容

  • 没有找到相关文章

最新更新