Json.net 忽略實體某些屬性的序列化

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

相關文章
相關標籤/搜索