我使用一个外部服务,它为字符串属性响应空对象“{}”。我可以使用一些属性来避免异常吗?
void should_deserialize()
{
var json = "{ \"p1\": {} }";
var res = JsonConvert.DeserializeObject<T1>(json);
}
class T1
{
public string P1 { get; set; }
}
答案 0 :(得分:6)
您可以使用隐藏的支持字段来解决此问题:
class T1
{
[JsonProperty("p1")]
private object _p1;
[JsonIgnore]
public string P1
{
get { return _p1 as string; }
set { _p1 = value; }
}
}
var json = "{ \"p1\": {} }";
// res.P1 is null
var res = JsonConvert.DeserializeObject<T1>(json);
var json2 = "{ \"p1\": \"hello\" }";
// res2.P1 is "hello"
var res2 = JsonConvert.DeserializeObject<T1>(json2);