Newtonsoft.Json反序列化空字符串

时间:2014-09-04 12:57:13

标签: c# json json.net

假设我的对象看起来像这样:

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 个答案:

答案 0 :(得分:3)

检查是否为空。它是一种预期的行为,因为在空字符串中没有定义对象:)

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

答案 1 :(得分:1)

你需要像这样装饰你的类:

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