首页 > 解决方案 > Newtosoft Json反序列化:如果/当给定的json字符串具有比必要更多的属性时,如何抛出错误?

问题描述

假设我们有以下类:

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

如果给定的 json 字符串是:我们如何告诉 newtonsoft json 发脾气:

{ "Id": 10, "SomethingIrrelevant": "Foobar" }

换句话说,我们希望反序列化是超严格的,当它检测到任何此类可疑的事情发生时就会发脾气。

标签: c#jsonjson.netjson-deserialization

解决方案


用于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'."

如果不存在,您也可以Id使用with强制JsonProperty它抛出Required.Always

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

推荐阅读