一尘不染

Json.NET MissingMemberHandling设置

json

当字符串缺少C#类所需的属性时,我想Json.NET抛出一个。JsonSerializationException``Json

MissingMemberHandling Enumeration那个

反序列化过程中遇到缺少的成员时,抛出JsonSerializationException。

但是我认为这与我想要的相反。我认为这意味着C#类上缺少成员。我想要一个失踪的Json成员。

我的代码是

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

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

例如

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

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

json中缺少P2。我想知道是什么情况。

谢谢。


阅读 445

收藏
2020-07-27

共1个答案

一尘不染

您必须使用以下命令将P2属性设置为必选 JsonPropertyAttribute

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

通过您的示例,您将获得一个JsonSerializationException

希望能帮助到你!

2020-07-27