2013-03-28 58 views
0

我有一些JSON:傑克遜反序列化時,POJO不匹配JSON結構

{ 
    key: "CORE-19", 
    fields: { summary: "iblah" } 
} 

我想將它打包成一個POJO,看起來更像是:

@JsonIgnoreProperties(ignoreUnknown=true) 
public class JiraIssue 
{ 
    private String mKey; 
    private String mSummary; 

    public String getKey(){ return(mKey);} 
    public void setKey(String inKey){mKey = inKey;} 
    public String getSummary(){return(mSummary);} 
    public void setSummary(String summary){ mSummary = summary; } 
} 

所以基本上我不知道想創建一個'Fields'對象,因爲它對我的需求來說有點多餘。然而,我真的不能在傑克遜看到任何方式告訴它,'總結'財產實際上來自'領域'財產。這可能嗎?

這個類的序列化不是一個問題,它只會用於反序列化。我無法控制JSON格式,因爲它來自外部來源(上面只是一個片段)。另外我實際上是用傑克遜和澤西。

謝謝!

回答

1

其實是有一個開放的issue對這種結構變化。現在沒有辦法只用註釋就可以輕鬆完成,而無需修改類。你可以做的反而是作爲一個「假」的屬性,通過添加下面的方法處理「領域」屬性:

public void setFields(Map<String, String> fields) { 
    setSummary(fields.get("summary")); 
} 

這樣你「拆開包裝」自己的財產。

+0

謝謝!很高興知道這不是我只是失去了一些東西。 – vica 2013-04-01 23:14:11

0

嘗試:

@JsonProperty("fields.summary") 
private String mSummary; 
+0

你不能這樣做與傑克遜。 – 2013-03-28 14:24:36

+0

嗨@jgm - 我做到了,不幸的是這並不適合我。 – vica 2013-04-01 23:14:35