Newtonsoft.Json 序列化 排除指定字段或只序列化指定字段
Posted LoveCoder
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
以上是关于Newtonsoft.Json 序列化 排除指定字段或只序列化指定字段的主要内容,如果未能解决你的问题,请参考以下文章
解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
Newtonsoft.Json 序列化和反序列化 以及时间格式 2