2017-03-16 237 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; 
}