Newtosoft Json 反序列化:如果给定的 json 字符串具有多于必要的属性,如何抛出错误?

XDS*_*XDS 3 c# json json.net json-deserialization

假设我们有以下类:

public class Foo {
      public long Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果给定的 json 字符串是:

{ "Id": 10, "SomethingIrrelevant": "Foobar" }
Run Code Online (Sandbox Code Playgroud)

换句话说,我们希望反序列化非常严格,并在检测到发生此类可疑情况时大发脾​​气。

Jef*_*f E 5

用于MissingMemberHandling.Error您的JsonSerializerSettings

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

您还可以使用with强制它抛出 ifId存在JsonPropertyRequired.Always

public class Foo {
    [JsonProperty(Required = Required.Always)]
    public long Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)