2013-08-09 5 views
9

Desidero immettere Json.NET per il JsonSerializationException quando la stringa Json manca una proprietà richiesta dalla classe C#.Json.NET MissingMemberHandling setting

C'è la MissingMemberHandling Enumeration che

Lanciare un JsonSerializationException quando un membro mancante è incontrate durante la deserializzazione.

ma penso che questo sia il contrario di quello che voglio. Penso che questo significhi un membro mancante nella classe C#. Voglio un membro Json mancante.

mio codice è

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

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

Per esempio

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

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

P2 non è presente nella JSON. Voglio sapere quando questo è il caso.

Grazie.

risposta

9

è necessario impostare la proprietà P2 obbligatoria con l'JsonPropertyAttribute

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

Con il vostro esempio, si otterrà un JsonSerializationException.

Spero che aiuti!