在我的应用程序中,我正在与外部json服务进行交互。
/// simple response class
public class AllForm
{
[JsonProperty("HOTELS")]
public Hotel[] Hotels
{
get;
set;
}
}
当'HOTELS'包含数据时,这会有效。 但是对于空集合,服务返回'HOTELS:false'。所以我反序列化异常。 我该如何解决这种情况(反序列化为null或空集合)?
答案 0 :(得分:0)
HOTELS:false
与HOTELS:null
或HOTELS:[]
不同。您需要进行一些自定义反序列化或更改服务才能正确返回
答案 1 :(得分:0)
您可以使用动态类型,即:
void DeserializeArrayOrBool(string json)
{
var jss = new System.Web.Script.Serialization.JavaScriptSerializer();
dynamic data = jss.Deserialize<dynamic>(json);
if (data["HOTELS"].GetType() == typeof(System.Boolean))
{
Console.WriteLine("empty array");
}
else
{
Console.WriteLine("HOTELS[0]={0} HOTELS[1]={1}", data["HOTELS"][0], data["HOTELS"][1]);
}
}
public void DerializeArrayOrBool()
{
DeserializeArrayOrBool(@"{""HOTELS"":[123, 456]}");
DeserializeArrayOrBool(@"{""HOTELS"":false}");
}