遇到了一个小问题
有一个用户类,结构和数据库如出一辙,里面包含用户密码,要向前台返回用户信息的json数据,可是不能输出密码这个字段。
以前的作法是 从新又建了一个不包含这个字段的新类,而后深度复制,总感受这中方式有点笨拙。受人启发么,想起来json.net中有一个数据库
能控制被序列化为一个json对象中的属性的特性,就找找有没有能屏蔽实体属性的特性json
果真spa
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; } } }
附带解释.net
JsonObjectAttributecode
这个标签的成员序列化标志指定成员序列化是opt-in(要序列化的成员必须带有JsonProperty或DataMember标签)仍是opt-out(默认全部的都会序列化,但经过JsonIgnoreAttribute标签能够忽略序列化。opt-out是json.net默认的)。对象
JsonPropertyAttributeblog
容许被序列化的成员自定义名字。这个标签同时标示出:在成员序列化设置为opt-in的时候,成员会被序列化。get
JsonIgnoreAttributestring
忽略域或属性的序列化io
JsonConverterAttribute
用于指派转换对象的JsonSerializer。
这个标签能够修饰类或类成员。用于修饰类时,经过此标签指派的JsonConverter会被设置为序列化类的默认方式。用于修饰属性或域成员时,被指派的JsonConverter会序列化它们的值。