将对象序列化为JSON,但仅包含具有[DataMember]属性的属性

时间:2014-11-23 18:43:25

标签: c# json

如何将给定对象序列化为JSON,但只包含具有[DataMember]属性的属性。

User MyUser = new User();
string MessageJson = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(MyUser);

public class User
{
    [DataMember]
    public string username { get; set; }

    public string password { get; set; }
}

3 个答案:

答案 0 :(得分:2)

您需要使用DataContractJsonSerializer。 请注意,我认为你在课堂上也需要DataContract属性。

答案 1 :(得分:2)

您可以使用JSON.Net

  

如果一个类有很多属性而你只想序列化它们的一小部分,那么将JsonIgnore添加到所有其他属性将是乏味且容易出错的。解决此方案的方法是将DataContractAttribute添加到类,将DataMemberAttributes添加到要序列化的属性。这是选择性序列化,与使用JsonIgnoreAttribute的选择退出序列化相比,只有您标记的属性被序列化。

[DataContract]
public class Computer
{
  // included in JSON
  [DataMember]
  public string Name { get; set; }
  [DataMember]
  public decimal SalePrice { get; set; }

  // ignored
  public string Manufacture { get; set; }
  public int StockCount { get; set; }
  public decimal WholeSalePrice { get; set; }
  public DateTime NextShipmentDate { get; set; }
}

答案 2 :(得分:0)

您可以将[ScriptIgnore]属性放在不希望包含在结果中的属性中。