【问题标题】:jackson serialization, is there an annotation that indicates what sub-properties to use for a property?jackson 序列化,是否有注释指示用于属性的子属性?
【发布时间】:2011-12-07 02:27:07
【问题描述】:

我想看看这样的东西

class User {
   @JsonMask({"name", "address"})
   private Company company;
   private String name;
   //...
}
class Company {
   private String name;
   private String address;
   private Set<User> employers;
   //...
}

当一个用户被序列化时,输出应该是

{"name": "Mike", "company": {"name": "Enterprise Co.Ltd", "address": "....." }}

而代价高昂的部分Set&lt;User&gt; 和其他子属性被安全地忽略了。

我对 Jackson 还不是很熟悉,只找到了 @JsonIgnore 来救援,但是我将永远失去所有这些 @JsonIgnored 属性。有没有优雅的方法来解决这个问题?

注意:我使用的是 Hibernate JPA,所以在我的模型类中有很多关系,有很深的关系链甚至循环引用,所以完整的 JSON 序列化总是会导致地狱......我用谷歌搜索了 @JsonManagedRef和朋友,但这只是解决循环问题,并且导致大量配置并且不太可读。

【问题讨论】:

    标签: java json serialization annotations jackson


    【解决方案1】:

    只找到了 @JsonIgnore 来救援,但我会永远失去所有这些 @JsonIgnored 属性

    据我了解,您希望仅在序列化 User 时忽略不需要的 Company 属性,而不是在序列化 Company 时应该发生的情况,例如直接。

    如果可以使用不同的序列化程序实例,即两个不同的ObjectMapper 实例,那么在序列化User 时,解决此问题的一种方法是使用mix-in 酌情应用@JsonIgnore。然后在序列化Company 时不要使用相同的序列化程序和混入。

    如果只需要一个序列化器,则需要自定义序列化。

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 1970-01-01
      • 2015-01-06
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 2011-04-04
      相关资源
      最近更新 更多