【发布时间】:2016-06-21 19:34:04
【问题描述】:
我有一些可以有两种不同格式的 JSON。有时location 值是一个字符串,有时它是一个对象。这是第一种格式的示例:
{
"result": [
{
"upon_approval": "Proceed to Next Task",
"location": "",
"expected_start": ""
}
]
}
为此的类定义:
public class Result
{
public string upon_approval { get; set; }
public string location { get; set; }
public string expected_start { get; set; }
}
public class RootObject
{
public List<Result> result { get; set; }
}
这是第二种格式的 JSON:
{
"result": [
{
"upon_approval": "Proceed to Next Task",
"location": {
"display_value": "Corp-HQR",
"link": "https://satellite.service-now.com/api/now/table/cmn_location/4a2cf91b13f2de00322dd4a76144b090"
},
"expected_start": ""
}
]
}
为此的类定义:
public class Location
{
public string display_value { get; set; }
public string link { get; set; }
}
public class Result
{
public string upon_approval { get; set; }
public Location location { get; set; }
public string expected_start { get; set; }
}
public class RootObject
{
public List<Result> result { get; set; }
}
在反序列化时,如果 JSON 格式与我的类不匹配,我会收到错误消息,但我不知道要使用哪些类,因为 JSON 格式会发生变化。那么如何动态地让这两种 JSON 格式反序列化为一组类呢?
这就是我现在反序列化的方式:
JavaScriptSerializer ser = new JavaScriptSerializer();
ser.MaxJsonLength = 2147483647;
RootObject ro = ser.Deserialize<RootObject>(responseValue);
【问题讨论】:
-
你的“结果”数组可以同时包含它们吗?
-
@Eser 不,我只能包含它们的任一类定义,但 json 响应具有字符串或类。所以我不知道如何忽略这些字符串值。
-
This可以给你一个提示......
标签: c# json javascriptserializer