2017-04-26 1 views
0

본문 요청으로 JSON을 허용하는 Java API (나머지)가 있습니다. 본문을 Java 클래스에 매핑해야하지만 JSON 속성 중 하나가 JSON 자체이므로 해당 구조를 예측할 수 없습니다.JSON 속성에서 Java API로 나머지 POST JSON

예를 들어

,이 자원이다 :

@POST 
public void paymentInfo(PaymentInfoEntity paymentInfoEntity) 
throws JsonGenerationException, JsonMappingException, IOException { 
    ... 
} 

이것은 JSON의 예는 다음과 같습니다

public class PaymentInfoEntity { 
    public Integer progressive; 
    public JsonNode params; 
} 

으로 :

{ 
    progressive: 123, 
    params: { [another valid JSON node] } 
} 

이 내가 엔티티를하고자하는 방법이다 이 구성에서이 오류가 있습니다 :

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of com.fasterxml.jackson.databind.JsonNode, problem: abstract types can only be instantiated with additional type information

JsonNode params 대신 BaseJsonNode params을 선언하면 같은 오류가 발생합니다.

내가 대신에 Object params을 선언하면 작동합니다. 그런 다음 어떻게 JSON을 파싱 할 수 있습니까? 이 경우 params.toString(){key1: "stringvalue1", key2: "stringvalue2"} 대신 {key1=stringvalue1, key2=stringvalue2} 양식입니다.

내 목표를 달성하는 데 가장 좋은 방법은 무엇입니까? 감사합니다.

답변

0

JsonNode는 추상 유형입니다. BaseJsonNode를 사용하려고 시도하십시오 또는 java.util.Map

+1

제가 작성한 것처럼, 나는 BaseJsonNode도 시도해 보았습니다. Map 가 작동하는 것 같습니다. 감사합니다. 그런 다음 새 ObjectMapper(). writeValueAsString (paymentInfoEntity.getParams())을 사용하여 JSON 객체를 가져옵니다. –