[英]Deserialize string property with empty object “{}”
I consume an external service that it responses empty object "{}" for a string property. 我使用了一个外部服务,它为字符串属性响应空对象“ {}”。 Could I use some attribute to avoid the exception? 我可以使用一些属性来避免异常吗?
void should_deserialize()
{
var json = "{ \"p1\": {} }";
var res = JsonConvert.DeserializeObject<T1>(json);
}
class T1
{
public string P1 { get; set; }
}
You can use a hidden backing field to circumvent this problem: 您可以使用隐藏的后备字段来解决此问题:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.