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會序列化它們的值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM