Newtosoft Json反序列化:如果/当给定的json字符串具有比必要的属性更多的属性时,如何引发错误?

时间:2019-03-29 15:28:05

标签: c# json json.net json-deserialization

假设我们有以下课程:

public class Foo {
      public long Id { get; set; }
}

如果给定的json字符串为:

我们怎么告诉newtonsoft json发脾气?
{ "Id": 10, "SomethingIrrelevant": "Foobar" }

换句话说,我们希望反序列化非常严格,并且当它检测到发生这种情况的时候就发脾气。

1 个答案:

答案 0 :(得分:3)

为您的JsonSerializerSettings使用MissingMemberHandling.Error

var deserialized = JsonConvert.DeserializeObject<Foo>(jsonString,
    new JsonSerializerSettings
    {
        MissingMemberHandling = MissingMemberHandling.Error
    }); // throws with "Could not find member 'SomethingIrrelevant' on object of type 'Foo'."

如果使用Required.AlwaysId,{em}不存在JsonProperty,也可以强制它抛出:

public class Foo {
    [JsonProperty(Required = Required.Always)]
    public long Id { get; set; }
}