1. 程式人生 > >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會序列化它們的值。