MVC 返回json数据 怎么忽略序列化某个属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC 返回json数据 怎么忽略序列化某个属性相关的知识,希望对你有一定的参考价值。

参考技术A   JsonIgnoreAttribute是Json.net中的属性吧,JsonResult用的是javascriptSerializer序列化的,所以那个属性没意义,除非你自己用Json.net实现自己的JsonResult,或者在初始化model对象后,把不想序列化的属性值设为空或null,还有一个办法就是定义专用的View Model类,只定义需要的属性。
  

Json.net 忽略实体某些属性的序列化

Json.net 忽略实体某些属性的序列化
遇到了一个小问题
有一个用户类,结构和数据库一模一样,里面包含用户密码,要向前台返回用户信息的json数据,但是不能输出密码这个字段。
之前的做法是 重新又建了一个不包含这个字段的新类,然后深度复制,总感觉这中方式有点笨拙。受人启发么,想起来json.net中有一个

能控制被序列化为一个json对象中的属性的特性,就找找有没有能屏蔽实体属性的特性

果然

复制代码
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    [JsonObject(MemberSerialization.OptIn)]
    public class User
    {
        [JsonProperty(PropertyName = "ID")]
        public int Unid { get; set; }

        [JsonProperty]
        public string UserName { get; set; }

        [JsonProperty]
        [JsonConverter(typeof(IsoDateTimeConverter))]
        public DateTime CreateTime { get; set; }

        [JsonIgnoreAttribute]
        public string PasssWord { get; set; }

        public string Memo { get; set; }
    }
}
复制代码
附带解释

JsonObjectAttribute

这个标签的成员序列化标志指定成员序列化是opt-in(要序列化的成员必须带有JsonProperty或DataMember标签)还是opt-out(默认所有的都会序列化,但通过JsonIgnoreAttribute标签可以忽略序列化。opt-out是json.net默认的)。

 

JsonPropertyAttribute

允许被序列化的成员自定义名字。这个标签同时标示出:在成员序列化设置为opt-in的时候,成员会被序列化。

 

JsonIgnoreAttribute

忽略域或属性的序列化

 

JsonConverterAttribute

用于指派转换对象的JsonSerializer。

这个标签可以修饰类或类成员。用于修饰类时,通过此标签指派的JsonConverter会被设置为序列化类的默认方式。用于修饰属性或域成员时,被指派的JsonConverter会序列化它们的值



 [XmlIgnore]
忽略xml 序列化

 






以上是关于MVC 返回json数据 怎么忽略序列化某个属性的主要内容,如果未能解决你的问题,请参考以下文章

Json.net 忽略实体某些属性的序列化

配置 JSON.NET 以忽略 DataContract/DataMember 属性

Spring MVC灵活控制返回json的值(自定义过滤字段)

ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)

Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的

asp.net MVC 怎么把数据库中取出的 数据 转换成json格式给easyui datagrid 控件