2013-08-09 10 views
9

Chciałbym, aby Json.NET rzucił JsonSerializationException, gdy w ciągu Json brakuje właściwości, wymaganej przez klasę C#.Ustawienie Json.NET MissingMemberHandling

Istnieje MissingMemberHandling Enumeration który

Rzut JsonSerializationException kiedy brakujący element jest napotkane podczas deserializacji.

ale myślę, że to jest odwrotność tego, co chcę. Myślę, że to oznacza brakującego członka na klasie C#. Chcę brakującego członka Jsona.

Mój kod jest

public MyObj Deserialise(string json) 
{ 
    var jsonSettings = new JsonSerializerSettings(); 
    jsonSettings.MissingMemberHandling = MissingMemberHandling.Error; 

    return JsonConvert.DeserializeObject<ApiMessage>(json, jsonSettings); 
} 

Na przykład

public class MyObj 
{ 
    public string P1 { get; set; } 
    public string P2 { get; set; } 
} 

string json = @"{ ""P1"": ""foo"" }"; 

P2 brakuje JSON. Chcę wiedzieć, kiedy tak się dzieje.

Dzięki.

Odpowiedz

9

Musisz ustawić właściwość P2 obowiązkowe z JsonPropertyAttribute

public class ApiMessage 
{ 
    public string P1 { get; set; } 
    [JsonProperty(Required = Required.Always)] 
    public string P2 { get; set; } 
} 

ze swoimi przykład dostaniesz JsonSerializationException.

Mam nadzieję, że pomoże!