2017-04-26 11 views
0

bodyリクエストとしてJSONを受け入れるJava API(rest)があります。 ボディをJavaクラスにマップする必要がありますが、JSON属性の1つがJSON自体であり、その構造を予測できません。JSON属性からJava APIへの残りのPOST JSON

例えば、これはリソースです:

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

これは、JSONの例である:

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

これは私が実体を希望する方法である:

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

付きこの設定では、私はこのエラーがあります:

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オブジェクトを取得します。 –

関連する問題