由于某种原因,JsonIdentityInfo会序列化一个孩子的深度,而不会序列化另一个孩子的深度。我的例子:

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "id")
class A {
  private long id;
  private B last;

  // Getters, setters...
}

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "id")
class B {
  private long id;
  private A a;
  private C c1;
  private C c2;

  // Getters, setters...
}

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "id")
class C {
  private long id;
  private Set<A> as;
  private B last;

  // Getters, setters...
}

我将对象B序列化,将子A a序列化到某个深度,将C c1序列化到几个级别。但是C c2仅获得引用。

我希望A a; C c1; C c2;仅序列化到第一个深度,或者还包括c2,无论深度如何。

最佳答案

只需在类@JsonUnwrapped中的属性c1c2上使用B批注。即

@JsonIdentityInfo(generator =
ObjectIdGenerators.IntSequenceGenerator.class, property = "id")

class B {
  private long id;
  private A a;
  @JsonUnwrapped
  private C c1;
  @JsonUnwrapped
  private C c2;

  // Getters, setters...
}

10-06 14:23
查看更多