我正在使用 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; }
}