栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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设置。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374432.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号