Ich habe eine Java-API (Rest), die eine JSON als Körperanforderung akzeptiert. Ich muss den Körper einer Java-Klasse zuordnen, aber eines der JSON-Attribute ist ein JSON selbst, und ich kann seine Struktur nicht vorhersagen.POST-JSON mit JSON-Attribut zu Java-API-Rest
Zum Beispiel ist dies die Ressource:
@POST
public void paymentInfo(PaymentInfoEntity paymentInfoEntity)
throws JsonGenerationException, JsonMappingException, IOException {
...
}
Dies ist ein JSON Beispiel:
{
progressive: 123,
params: { [another valid JSON node] }
}
Dies ist, wie ich das Unternehmen möchte:
public class PaymentInfoEntity {
public Integer progressive;
public JsonNode params;
}
Mit Diese Konfiguration habe ich diesen Fehler:
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
Derselbe Fehler tritt auf, wenn ich BaseJsonNode params
anstelle von JsonNode params
deklariere.
Wenn ich stattdessen eine Object params
deklariere, funktioniert es. Wie kann ich dann einen JSON daraus parsen? In diesem Fall ist params.toString()
das Formular {key1=stringvalue1, key2=stringvalue2}
anstelle von {key1: "stringvalue1", key2: "stringvalue2"}
.
Welches ist die beste Option, um mein Ziel zu erreichen? Vielen Dank!
Wie ich schrieb, versuchte ich auch BaseJsonNode, mit dem gleichen Ergebnis. Map scheint zu funktionieren, danke. Ich bekomme dann ein JSON-Objekt mit dem neuen ObjectMapper(). WriteValueAsString (paymentInfoEntity.getParams()). –