Json.NET需要反序列化的所有属性

Json.NET需要反序列化的所有属性,第1张

Json.NET需要反序列化的所有属性

如果您的 模型 具有 JSON
可能会忽略的属性,而您希望它是一个错误,请将属性添加

[JsonObject(ItemRequired=Required.Always)]
到类中:

类型:必填

一个值,指示是否需要对象的属性。

可能的值为

Required

  • 默认值:该属性不是必需的。默认状态。
  • AllowNull:该属性必须在JSON中定义,但可以为空值。
  • 始终:该属性必须在JSON中定义,并且不能为空值。
  • DisallowNull:该属性不是必需的,但不能为null值(如果存在)。(Json.NET
    8.0.1及更高版本。)


设置是继承的,因此可以将其添加到通用基类中。

更新资料

要针对所有对象全局执行此 *** 作,请对进行子类化

DefaultContractResolver
并将
ItemRequired
标记添加到所有对象协定中:

public class RequireObjectPropertiesContractResolver : DefaultContractResolver{    protected override JsonObjectContract CreateObjectContract(Type objectType)    {        var contract = base.CreateObjectContract(objectType);        contract.ItemRequired = Required.Always;        return contract;    }}

然后,在设置中:

var settings = new JsonSerializerSettings { ContractResolver = new RequireObjectPropertiesContractResolver() };

笔记:
* 如问题中所述,该设置

MissingMemberHandling = MissingMemberHandling.Error
解决了一个补充问题:如果您的 JSON 可能具有您的 模型 忽略的属性,并且您希望它是一个错误,请使用
MissingMemberHandling.Error
。请参阅:MissingMemberHandling设置。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4916346.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存