2013-08-09 15 views
9

Json文字列にC#クラスに必要なプロパティがない場合、にJsonSerializationExceptionをスローします。Json.NET MissingMemberHandling設定

が不足しているメンバーは、直列化復元中に発生した とき

がJsonSerializationExceptionを投げMissingMemberHandling Enumerationがあります。

しかし、これは私が望むものの逆だと思います。私はこれがc#クラスの欠けているメンバーを意味すると思います。私はJsonメンバーがいなくて欲しいです。

私のコードは

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

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

例えば

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

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

あるP2は、JSONから欠落しています。これがいつ当時か知りたいです。

ありがとうございました。

答えて

9

あなたはあなたの例ではJsonPropertyAttribute

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

で必須にP2プロパティを設定する必要があり、あなたはJsonSerializationExceptionを取得します。

希望すると助かります!