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

通过自定义属性(json.net)从序列化中排除属性

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

通过自定义属性(json.net)从序列化中排除属性

您有几种选择。我建议您在阅读以下内容之前,先阅读有关该主题的Json.Net文档文章。

本文介绍了两种方法:

  1. 创建一个
    bool
    基于Json.Net将遵循的命名约定来返回值的方法,以确定是否序列化该属性。
  2. 创建一个忽略该属性的自定义合同解析器。

在这两者中,我赞成后者。完全跳过属性-
仅使用它们忽略所有形式的序列化中的属性。相反,创建一个忽略有问题的属性的自定义合同解析器,并且仅在您要忽略该属性时才使用合同解析器,而让该类的其他用户可以随意序列化该属性,也可以不随意执行。

编辑 为了避免链接腐烂,我将从文章中发布相关代码

public class ShouldSerializeContractResolver : DefaultContractResolver{   public new static readonly ShouldSerializeContractResolver Instance =new ShouldSerializeContractResolver();   protected override JsonProperty CreateProperty( MemberInfo member,   MemberSerialization memberSerialization )   {      JsonProperty property = base.CreateProperty( member, memberSerialization );      if( property.DeclaringType == typeof(Employee) && property.PropertyName == "Manager" )      {         property.ShouldSerialize = instance =>         { // replace this logic with your own, probably just   // return false; Employee e = (Employee)instance; return e.Manager != e;         };      }      return property;   }}


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

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

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