簡體   English   中英

使用JAVA BEAN的Jackson JSON映射JSON鍵

[英]Jackson JSON Mapping JSON keys with JAVA BEAN

我正在使用Jackson JSON LIB 2.8,並且正在使用Json.mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,true);

但有時我需要用兩個不同的名稱來映射某些字段,例如

POJO具有屬性builindg ,我需要將其映射到buildingUidBUILDING取決於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM