c# - Newtosoft Json反序列化:如果/当给定的json字符串具有比必要更多的属性时,如何抛出错误?
问题描述
假设我们有以下类:
public class Foo {
public long Id { get; set; }
}
如果给定的 json 字符串是:我们如何告诉 newtonsoft json 发脾气:
{ "Id": 10, "SomethingIrrelevant": "Foobar" }
换句话说,我们希望反序列化是超严格的,当它检测到任何此类可疑的事情发生时就会发脾气。
解决方案
用于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; }
}
推荐阅读
- sql - 如何在sql查询中比较两个表匹配和不匹配?
- r - 随机森林:用于 k 折交叉验证的 OOB?
- android - 为什么小吃店被全宽度占用
- python - Pygame 的 Surface.fill() 给出 ModuleNotFoundError: No module named 'pygame.movie'
- java - Apache NetBeans IDE 12.0 无法创建新的 java 应用程序
- python - 如何在数据框中将货币转换为美元
- sql - 雪花查询性能改进
- mapping - Python:使用 visvis 在 DEM 上映射数据
- ruby - 无法在基于 docker logstash 图像的容器中创建自定义文件夹
- tensorflow - 如何在 keras 镜像策略中控制状态度量的缩减策略