Json.NET MissingMemberHandling setting

c#, deserialization, json, json.net, serialization

Solution

You have to set the P2 property to mandatory with the `JsonPropertyAttribute`

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

With your example, you will get an `JsonSerializationException`.

Hope it helps!

Problem

I would like `Json.NET` to throw a `JsonSerializationException` when the `Json` string is missing a property that the C# class requires. There is the `MissingMemberHandling Enumeration` which Throw a JsonSerializationException when a missing member is encountered during deserialization. but I think this is the reverse of what I want. I think this means a missing member on the c# class. I want a missing Json member. My code is ``` public MyObj Deserialise(string json) { var jsonSettings = new JsonSerializerSettings(); jsonSettings.MissingMemberHandling = MissingMemberHandling.Error; return JsonConvert.DeserializeObject<ApiMessage>(json, jsonSettings); } ``` For example ``` public class MyObj { public string P1 { get; set; } public string P2 { get; set; } } string json = @"{ ""P1"": ""foo"" }"; ``` P2 is missing from the json. I want to know when this is the case. Thanks.

Original source

Related problems