笔记:Newtonjson.Json自定义输出那些属性

来源:互联网 发布:政府数据共享交换 2017 编辑:程序博客网 时间:2024/06/14 21:56
using Newtonsoft.Json;using Newtonsoft.Json.Serialization;public class ExtNewtonsoftJson : DefaultContractResolver{    public enum Method { Ignore,Serialization}    IEnumerable<string> lstExclude;    Method method;    public ExtNewtonsoftJson(IEnumerable<string> excludedProperties,Method method=Method.Serialization)    {        this.method = method;        lstExclude = excludedProperties;    }    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)    {        if(method==Method.Ignore)        {            return base.CreateProperties(type, memberSerialization).ToList().FindAll(p => !lstExclude.Contains(p.PropertyName));        }        return base.CreateProperties(type, memberSerialization).ToList().FindAll(p => lstExclude.Contains(p.PropertyName));    }}//使用方法class menus{    public string GetRootMenus()    {        UserLoginTokenBLL bll = new UserLoginTokenBLL(Cookies.GetCookie("uid"));        return JsonConvert.SerializeObject(        new  MenusViewBLL().GetRootMenusView(bll.AccountID),        new JsonSerializerSettings{        ContractResolver=new ExtNewtonsoftJson(new List<string>() {"ID","Name","Url" })});    }}ExtNewtonsoftJson默认是配置那些属性要输出,以上代码结果会输出:ID,Name,Url,如果要忽略某个属性,可以在构造方法中使用参数,Method.Ignore
原创粉丝点击