是否有类似于JsonIgnore相反的东西?

4
JsonIgnore属性可以用于在序列化过程中忽略某些属性。我想知道是否有可能做到相反的效果?也就是说,只有在特定属性上有一个特殊的属性时,JsonSerializer才会序列化它,其他所有属性都会被忽略。
2个回答

8

是的,有办法。当您使用[JsonObjectAttribute]将类定义为可序列化对象,并传递MemberSerialization.OptIn参数时,成员序列化是选择性的。然后使用[JsonProperty]标记您的成员以包括它们进行序列化。

[JsonObject(MemberSerialization.OptIn)]
public class Person
{
    [JsonProperty]
    public string Name { get; set; }

    // not serialized because mode is opt-in
    public string Department { get; set; }
}

1
或者,可以使用数据合同属性来达到相同的效果。 - dbc
@dbc 我喜欢Json属性的替代方法。我选择了Json属性,因为它们允许在未来轻松进行进一步的自定义,并且应用相同的工作量。数据契约属性的优势在于它们已经为大多数用户所熟知。 - Myrtle

2

使用DataContract/DataMember属性是MemberSerialization.OptIn的一种替代方案:

[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; }
}

来源:http://james.newtonking.com/archive/2009/10/23/efficient-json-with-json-net-reducing-serialized-json-size

这篇文章是关于如何使用Json.NET来减少序列化后的JSON大小的。Json.NET是一个流行的.NET库,用于处理JSON数据。通过一些简单的技巧,可以使用Json.NET来缩小您的JSON负载并提高性能。本文详细介绍如何使用Json.NET来实现这一目标。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接