遇到了一個小問題
有一個用戶類,結構和數據庫如出一轍,裏面包含用戶密碼,要向前臺返回用戶信息的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會序列化它們的值。