2017-03-16 242 views
0

我有一個數據場景,我想在我的POJO類中使用嵌套對象的屬性填充屬性。下面只是一個例子,但我有很多這樣的嵌套變量。JSON到POJO轉換使用Jackson&JsonPath

例如我的java類是遵循

public class Book{ 
    private String title; 
    private String author; 
    private String isbn; 
    ...  
} 

我的JSON響應,我需要反序列化是如下

{ 
    "title":"the jungle book", 
    "author":"Rudyard Kipling", 
    "code":{ 
     "isbn":"1616416920" 
     } 
} 

所以在我的Java類的屬性ISBN,需要使用嵌套字段填充代碼內部的對象。

我試圖用@JsonProperty如下

@JsonProperty(value="code.isbn") 
private String isbn; 

但它仍然設置屬性ISBN到我的Java POJO類裏面空。 有人可以請建議我該如何做到這一點。

感謝您提前。

+0

有沒有在JSON結構中的任何規則性或一致性?是''code「'下的嵌套屬性? –

+0

在我的實際情況中,由於PHI我無法共享這些情況,因此存在多個屬於不同級別的屬性。創建和實例化那麼多我可能不會使用的類會導致內存浪費,因此我試圖找到一種方法,在這裏我可以使用JsonPath將這種嵌套屬性拉入我的POJO對象中。我更喜歡是否可以使用ObjectMapper類將JSOn解析爲POJO,並以某種方式使用JsonPath來獲取嵌套屬性(如上面我共享的示例中的isbn) – nishiz

回答

0

您可以編寫自定義代碼來解析json,通過解析嵌套對象來創建具有isbn值的Book對象。

對於給定的JSON,你需要定義一個對象說「守則」

public class Book { 
    @JsonProperty(value="title") 
    private String title; 

    @JsonProperty(value="author") 
    private String author; 

    @JsonProperty(value="code") 
    private Code code; 
} 

public class Code { 
    @JsonProperty(value="isbn") 
    public String isbn; 
}