Post ein JSON-Array in den Frühling Starten RestController
Ich bin Entsendung, so etwas wie dieses:
{
"stuff": [
{
"thingId": 1,
"thingNumber": "abc",
"countryCode": "ZA"
},
{
"thingId": 2,
"thingNumber": "xyz",
"countryCode": "US"
}
]
}
Kann ich abrufen der Daten in der Steuerung wie folgt:
@RequestMapping(value = "/stuffs", method = RequestMethod.POST)
public String invoices(@RequestBody Map<String, List <Stuff>> stuffs) {
return "Hooray";
}
Was ich wirklich gerne tun, ist nur eine Liste von Sachen, die in den controller; ie:
@RequestMapping(value = "/stuffs", method = RequestMethod.POST)
public String invoices(@RequestBody List <Stuff> stuffs) {
return "I'm sad that this won't work.";
}
Jedoch, Jackson nicht so aus. Die Fehler, die ich erhalte ist folgende:
Konnte nicht gelesen werden JSON-Dokument: Kann nicht deserialisiert Instanz
java.util.ArrayList aus START_OBJECT token\n [Quelle:
java.io.PushbackInputStream@2a30a2f4; Zeile: 1, Spalte: 1]; geschachtelte
Ausnahme ist com.fasterxml.jackson.databind-Methode.JsonMappingException: Kann
nicht Deserialisieren Instanz von java.util.ArrayList aus START_OBJECT
token\n [Quelle: java.io.PushbackInputStream@2a30a2f4; line: 1,
Spalte: 1]
Kann ich nicht senden, in der folgende (da es kein gültiges JSON):
{
[
{
"thingId": 1,
"thingNumber": "abc",
"countryCode": "ZA"
},
{
"thingId": 2,
"thingNumber": "xyz",
"countryCode": "US"
}
]
}
Ich bin sicher, dass dies etwas zu einfach, aber ich kann nicht destillieren eine Antwort von meinem StackOverflow und Google-Suche.
Jede mögliche Hilfe würde geschätzt! 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
brauchen Sie nur senden Sie diese ohne die geschweiften Klammern
In Ihrem controller, wenn Sie sagen, Jackson, dass es sein sollte parsing-Liste sollte eine Liste nicht ein Objekt mit einer Liste
Beachten Sie, dass, wenn Sie versuchen, ein array von JSON-ohne eine Java-Klasse (die Klasse die "Dinge" in der OP ' s Frage), müssen Sie zum einrichten des Spring-Boot-Controller wie diesem: