2014-09-04 140 views
4

可以说我有一个物体看起来像这样:Newtonsoft.Json反序列化空字符串

public class MyObject 
{ 
    [JsonProperty(Required = Required.Always)] 
    public string Prop1 { get; set; } 

    [JsonProperty(Required = Required.Always)] 
    public string Prop2 { get; set; } 
} 

现在,如果我尝试反序列化使用JsonConvert之一是缺少的属性时,会抛出异常的字符串。 但是,如果我传递一个空字符串是这样的:返回

JsonConvert.DeserializeObject<MyObject>("") 

null但没有抛出异常。如何配置MyObject或解串器,以便JsonException被引发,就像缺少任何所需的属性一样?

回答

2

只需检查null。这是一个预期的行为,因为没有一个空字符串:)

var obj = JsonConvert.DeserializeObject<MyObject>(""); 
if (obj == null) 
{ 
    throw new Exception(); 
} 
2

你需要来装饰你的类这样定义对象:

[JsonObject(ItemRequired = Required.Always)] 
public class MyObject 
{ 
} 
+0

我已经试过这一点,但JsonConvert.DeserializeObject刚返回null并且不抛出异常 – 2014-09-04 13:30:35

+0

奇怪它应该工作。即使在方法Required.Always的描述中:属性必须在JSON中定义,并且不能为null。 – 2014-09-04 13:37:39

相关问题