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

Просто отметьте нулевой адрес. Это ожидаемое поведение, так как нет ни одного объекта, определенного в пустой строке :)

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

Вы должны украсить свой класс, как это:

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

Я пробовал это, но JsonConvert.DeserializeObject просто возвращает null и не генерируется исключение –

+0

Странно, что он должен работать. Даже в описании метода Required.Always говорит: свойство должно быть определено в JSON и не может быть нулевым. –

Смежные вопросы