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
不存在 ,您也可以使用 JsonProperty
和 Required.Always
:
强制抛出
public class Foo {
[JsonProperty(Required = Required.Always)]
public long Id { get; set; }
}
假设我们有以下 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
不存在 ,您也可以使用 JsonProperty
和 Required.Always
:
public class Foo {
[JsonProperty(Required = Required.Always)]
public long Id { get; set; }
}