zoukankan      html  css  js  c++  java
  • Newtonsoft.Json 序列化 排除指定字段或只序列化指定字段

    using Newtonsoft.Json;
    using Newtonsoft.Json.Serialization;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for LimitPropsContractResolver
    /// </summary>
    public class LimitPropsContractResolver : DefaultContractResolver
    {
        string[] props = null;
    
        bool retain;
    
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="props">传入的属性数组</param>
        /// <param name="retain">true:表示props是需要保留的字段  false:表示props是要排除的字段</param>
        public LimitPropsContractResolver(string[] props, bool retain = true)
        {
            //指定要序列化属性的清单
            this.props = props;
    
            this.retain = retain;
        }
    
        protected override IList<JsonProperty> CreateProperties(Type type,
    
        MemberSerialization memberSerialization)
        {
            IList<JsonProperty> list =
            base.CreateProperties(type, memberSerialization);
            //只保留清单有列出的属性
            return list.Where(p =>
            {
                if (retain)
                {
                    return props.Contains(p.PropertyName);
                }
                else
                {
                    return !props.Contains(p.PropertyName);
                }
            }).ToList();
        }
    }
    

      调用代码:

    var jSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
    string[] props = { "operationRemark", "managerCode", "checkRemark" }; //排除掉,不能让前端看到的字段。为true的话就是只保留这些字段
    jSetting.ContractResolver = new LimitPropsContractResolver(props, false);

    jsonStr = JsonConvert.SerializeObject(slboe, jSetting);

  • 相关阅读:
    周总结博客07
    河北重大技术需求系统05
    php面向对象中的魔术方法
    用Kotlin开发Android应用(II):创建新项目
    Android APP性能分析方法及工具
    php基础
    jQuery总结
    css总结
    PHP运算符优先级(摘自在线工具)
    PHPExcel导出excel表格
  • 原文地址:https://www.cnblogs.com/Jerseyblog/p/10078278.html
Copyright © 2011-2022 走看看