1. 概述
本快速教程演示瞭如何通過序列化時將字段的名稱更改為映射到另一個 JSON 屬性的方法。
如果您想深入瞭解並學習更多使用 Jackson 2 的技巧,請訪問主 Jackson 教程。
2. 更改字段名稱以進行序列化
處理一個簡單的實體:
public class MyDto {
private String stringValue;
public MyDto() {
super();
}
public String getStringValue() {
return stringValue;
}
public void setStringValue(String stringValue) {
this.stringValue = stringValue;
}
}將它序列化後,將生成以下 JSON:
{"stringValue":"some value"}為了自定義該輸出,使其在不使用 stringValue 的情況下,例如,使用 strVal,只需要註釋一下獲取器即可。
@JsonProperty("strVal")
public String getStringValue() {
return stringValue;
}現在,我們來探討序列化,以獲得期望的輸出:
{"strVal":"some value"}一個簡單的單元測試應該驗證輸出是否正確。
@Test
public void givenNameOfFieldIsChanged_whenSerializing_thenCorrect()
throws JsonParseException, IOException {
ObjectMapper mapper = new ObjectMapper();
MyDtoFieldNameChanged dtoObject = new MyDtoFieldNameChanged();
dtoObject.setStringValue("a");
String dtoAsString = mapper.writeValueAsString(dtoObject);
assertThat(dtoAsString, not(containsString("stringValue")));
assertThat(dtoAsString, containsString("strVal"));
}3. 結論
將實體映射到特定的 JSON 格式是一項常見的任務——本文通過使用 @JsonProperty 註解來演示如何實現這一目標。