我有JSON:
{"400" : "120Hz"}
(实际上,我的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;
}
}
之后,我需要将此DTO发送到前端,但我希望它的字段是人类可读的,例如:{"frequency_value" : "120Hz"}
。
我想到的唯一一件事就是创造某种FrequencyFrontendDTO
,例如:
public class FrequencyFrontendDTO {
@JsonProperty("frequency_value")
public String frequency;
//getters and setters
}
并将其与FrequencyDTO
映射。
有更清洁的方法吗?
答案 0 :(得分:1)
我强烈建议您使用DTO。在此answer中查看原因。
或者您可以使用@JsonView
。从Jackson 2.9开始,您可以使用@JsonAlias
,它仅用于反序列化。
答案 1 :(得分:1)
@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;
}
}