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}
の形式です。
私の目標を達成するための最良の選択肢はどれですか? ありがとうございました!
私が書いたように、私は同じ結果を得てBaseJsonNodeも試みました。 Mapが動作するようですが、ありがとうございます。次に、新しいObjectMapper()。writeValueAsString(paymentInfoEntity.getParams())を使用してJSONオブジェクトを取得します。 –