2017-12-05 15 views
1

알려진 필드 (예 : A 및 B, String으로 입력 됨) 및 알 수없는 필드 (foo 및 bar, 일부 다른 수 또는 없음)가있는 간단한 JSON 구조를가집니다. 그들 중, 알 수 없음).JSON을 JAVA에서 알려진/알 수없는 필드가 혼합되어 파싱합니다.

[ 
    {"A": "Value for A", B: "Value for B", "foo": "foo"}, 
    {"A": "Value for A", B: "Value for B", "bar": 13}, 
    {"A": "Value for A", B: "Value for B", "foo": "foo", "val": true} 
] 

이 JSON을 POJO로 구문 분석해야합니다. Jackson은이 JSON을 JsonNode로 구문 분석 할 수 있지만 JsonNode는 막대한 양의 데이터를 너무 많이 섭취합니다. 그렇게 할 방법이 있습니까? 나는이 같은 클래스의 인스턴스를 얻을 필요가 :

class Simple 
{ 
    public String A; 
    public String B; 
    public HashMap others; 
} 
+0

JSON 구조를 변경할 수 있습니까? –

+0

이 JSON을 문자열로 가져 오는 것이므로 효과적 일 수 있습니다. JSON은 약 1 ~ 5MB입니다. –

답변

1

당신은 @JsonAnySetter 방법 주석을 POJO를 사용할 수 있습니다. 필요하다면 실제로이 방법으로 계산/최적화를 수행 할 수도 있습니다.

public class Simple { 
    private String A; 
    private String B; 
    private Map other = new HashMap<String,Object>(); 

    // "any getter" needed for serialization  
    @JsonAnyGetter 
    public Map any() { 
     return other; 
    } 

    // "any setter" needed for deserialization 
    @JsonAnySetter 
    public void set(String name, Object value) { 
     other.put(name, value); 
    } 

    // getter and setter for A and B 
}