2014-09-04 72 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