2017-03-16 11 views
0

중첩 된 객체의 속성을 사용하여 POJO 클래스의 속성을 채우려는 데이터 시나리오가 있습니다. 아래는 단지 예일뿐입니다. 그러나 중첩 된 변수가 많이 있습니다. 내가Jackson & JsonPath를 사용하여 JSON에서 POJO로 변환

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

에 따라대로 역 직렬화 할 필요가

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

그리고 내 JSON 응답을 따를

예를 들어 내 자바 클래스입니다 그래서 내 자바 클래스의 속성 ISBN, 요구 중첩 된 필드 isbn코드 개체를 사용하여 채워야합니다.

나는

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

를 따르는 @JsonProperty로 사용하려고하지만 여전히 내 자바 POJO 클래스 내에서 null로 속성 ISBN을 설정합니다. 누군가이 방법을 제안 할 수 있습니까?

미리 감사드립니다.

+0

json으로 구조에서 어떤 규칙 또는 일관성이 "코드"라고 정의 할 필요가? ''code ''아래에서 중첩 된 속성입니까? –

+0

PHI로 인해 공유 할 수없는 나의 실제 시나리오에는 여러 수준의 여러 속성이 있습니다. 내가 사용하지 않을 수있는 많은 클래스를 생성하고 인스턴스화하면 메모리 낭비가 발생하므로 JsonPath를 사용하여 POJO 객체에 중첩 된 속성을 가져올 수있는 방법을 찾으려고합니다. ObjectMapper 클래스를 사용하여 POJO에 대한 JSOn을 구문 분석하고 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; 
}