C# MVC JSON相關雜談-排除/僅顯示 特定屬性 (使用Newtonsoft.Json)

  • 772
  • 0

在轉換JSON時,有時候會需要排除掉某些屬性,在Model中可以透過簡單的設定來達成

情況一、十個屬性,僅呈現兩個屬性時,使用[DataContract]+[DataMember]

情況二、十個屬性,僅排除一個屬性時,使用[JsonIgnore]

==========================================================

下列屬性我只想呈現 角色名稱、熱門程度

情況一、十個屬性,僅呈現兩個屬性時,使用[DataContract]+[DataMember]

using Newtonsoft.Json;
using System.Runtime.Serialization;//[DataContract]要import的

namespace league of legends
{
    /// <summary>表示一位英雄明細</summary>
    [DataContract] //轉換JSON時僅轉換[DataMember]
    public class Hero
    {
        #region properties
        /// <summary>資料主鍵</summary>
        public int ID { get; set; }

        /// <summary>角色名稱</summary> 
        [DataMember]        
        public string Name{ get; set; }

        /// <summary>身高</summary> 
        public int CM { get; set; }

        /// <summary>性別</summary> 
        public string Gender{ get; set; }

        /// <summary>躺著的身高</summary>
        public string SecretCM { get; set; }

        /// <summary>熱門程度</summary>
        [DataMember]
        public string level{ get; set; }

        
        #endregion
    }
}
 

在Json輸出時,就只會呈現角色名稱和熱門程度。

==========================================================

如果換成情況二的寫法就會如下:

情況二、十個屬性,僅排除一個屬性時,使用[JsonIgnore]

using Newtonsoft.Json;

namespace league of legends
{
    /// <summary>表示一位英雄明細</summary>
    public class Hero
    {
        #region properties
        /// <summary>資料主鍵</summary>
        [JsonIgnore]
        public int ID { get; set; }

        /// <summary>角色名稱</summary>         
        public string Name{ get; set; }

        /// <summary>身高</summary> 
        [JsonIgnore]
        public int CM { get; set; }

        /// <summary>性別</summary> 
        [JsonIgnore]
        public string Gender{ get; set; }

        /// <summary>躺著的身高</summary>
        [JsonIgnore]
        public string SecretCM { get; set; }

        /// <summary>熱門程度</summary>
        public string level{ get; set; }

        
        #endregion
    }
}

情況二的寫法,在Json輸出時,一樣只會呈現角色名稱和熱門程度。

==========================================================

那麼情況一,使用[Datamember]能不能再使用JsonIgnore?

可以,但是沒有意義。