如果Jackson已决定使用ObjectIdentity进行输出,请更改JSON属性名称

时间:2016-01-06 18:04:19

标签: java json jackson

给出一个班级

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class User {
  public int id;
  public User other;
}

如果Jackson匹配之前看到的User对象,它将使用ObjectIdGenerator输出id而不是实际对象。

示例输出:

{
  "id": 1257,
  "other" : {
    "id": 411,
    "other": 1257   
  }  
}

但是,如果触发了对象ID,我想使用不同的属性名称,因此输出看起来像

{
  "id": 1257,
  "other" : {
    "id": 411,
    "otherRef": 1257   
  }  
}

自定义序列化程序会实现此目的吗?我可以找到很多自定义序列化程序更改属性值的示例,但没有基于属性值更改属性名称的示例。

1 个答案:

答案 0 :(得分:0)

您可以使用@JsonGetter执行此操作。使用@JsonIgnore标记字段,然后创建名为getOtherRef的方法,标记为@JsonGetter