使用 Jackson 重命名对象中的字段

hts*_*ame 4 java jackson

我有 JSON:

{"400" : "120Hz"} 
Run Code Online (Sandbox Code Playgroud)

(实际上,我的 JSON 要复杂得多,而且基本上很大)

我用来Jackson将数据映射到FrequencyDTO.

public class FrequencyDTO {

    @JsonProperty("400")
    private String frequency;

    public String getFreqiency() {
        return this.frequency;
    }

    public void setFrequency(String frequency) {
        this.frequency = frequency;
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,我需要将此 DTO 发送到前端,但我希望它的字段是人类可读的,例如:{"frequency_value" : "120Hz"}

我唯一想到的就是创建某种FrequencyFrontendDTO,例如:

public class FrequencyFrontendDTO {

    @JsonProperty("frequency_value")
    public String frequency;

    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

并将其映射为FrequencyDTO.

有没有更干净的方法来做到这一点?

pL4*_*u33 7

@JsonAlias 反序列化属性中的所有别名。但序列化仅适用于给定的@JsonProperty

public FrequencyDTO() {

@JsonProperty("frequency_value")
@JsonAlias({"400"})
private String frequency;

public String getFreqiency() {
    return this.frequency;
}

public void setFrequency(String frequency) {
    this.frequency = frequency;
}
Run Code Online (Sandbox Code Playgroud)

}