Newtonsoft Json 反序列化:如何抛出错误 if/when 给定的 json 字符串具有比必要更多的属性?

Newtosoft Json Deserialization: How to throw an error if/when the given json string has MORE properties than necessary?

假设我们有以下 class:

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

如果给定的 json-string 是:

,我们如何告诉 newtonsoft json 发脾气
{ "Id": 10, "SomethingIrrelevant": "Foobar" }

换句话说,我们希望反序列化非常严格,并在检测到任何可疑事件发生时发脾气。

为您的 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'."

如果 Id 不存在 ,您也可以使用 JsonPropertyRequired.Always:

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