使用Jackson更改JSON中的字段名称

我正在使用jackson将我的对象转换为json。 该对象有2个字段:

@Entity public class City { @id Long id; String name; public String getName() { return name; } public void setName(String name){ this.name = name; } public Long getId() { return id; } public void setName(Long id){ this.id = id; } } 

因为我想要使用jQuery自动完成function,所以我希望'id'在json和'name'中显示为'value',显示为'label'。 jackson的文档不清楚,我已经尝试了每个注释,即使是远程似乎它做我所需要的,但我不能让name显示为labelid显示为value的JSON。

有谁知道如何做到这一点,如果这是可能的?

你有没有尝试过使用@JsonProperty?

 @Entity public class City { @id Long id; String name; @JsonProperty("label") public String getName() { return name; } public void setName(String name){ this.name = name; } @JsonProperty("value") public Long getId() { return id; } public void setName(Long id){ this.id = id; } } 

请注意,Jackson 1.x中有com.fasterxml.jackson.annotation.JsonProperty ,Jackson 2.x中有com.fasterxml.jackson.annotation.JsonProperty 。 检查你正在使用哪个ObjectMapper(从哪个版本),并确保你使用正确的注释。

还有一个选项来重命名字段:

jacksonMixIns 。

有用的,如果你处理第三方类,你不能注释 ,或者你只是不想污染与jackson特定的注释类。