[英]Jackson JSON Mapping JSON keys with JAVA BEAN
我正在使用Jackson JSON LIB 2.8,並且正在使用Json.mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,true);
但有時我需要用兩個不同的名稱來映射某些字段,例如
POJO具有屬性builindg
,我需要將其映射到buildingUid
或BUILDING
取決於JSON中存在哪些鍵,他們有什么辦法做到這一點?
范例:
public class Building extends Bean {
private UUID id;
private String name;
}
我有兩個不同的來源,一個是我的數據庫,它以這種格式返回JSON:
{
"ID":"build",
"NAME":"name1"
}
我的另一個消息來源是一個客戶:
{
"UID" : "build",
"name" : "name1"
}
如您所見,我的問題是同時使用UID和ID映射ID,我設法使用:
Json.mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,true);
但是另一個來源是UID,當我做類似的事情時,我不知道如何自動映射它
Json.encode(Building.toString());
可以使用帶有@JsonSetter
注釋的多個設置器
嘗試這樣的事情:
public class Building extends Bean {
private String id;
private String name;
@JsonGetter("id")
public String getId() {
return id;
}
@JsonSetter("id")
public void setId(String id) {
this.id = id;
}
@JsonSetter("UID")
public void setUID(String id) {
setId(id);
}
@JsonGetter("name")
public String getName() {
return name;
}
@JsonSetter("name")
public void setName(String name) {
this.name = name;
}
@JsonSetter("NAME")
public void setUpperCaseName(String name) {
setName(name);
}
}
但這有點糟糕(解決方案不是動態的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.