2016-01-14 12 views
11

Devo passare un elenco di valori nel corpo della richiesta del metodo POST ma ottengo 400: Bad Request error.Come passare l'elenco <String> nel metodo post utilizzando Spring MVC?

Qui di seguito è il mio codice di esempio:

@RequestMapping(value = "/saveFruits", method = RequestMethod.POST, 
    consumes = "application/json") 
@ResponseBody 
public ResultObject saveFruits(@RequestBody List<String> fruits) { 
    ... 
} 

Il JSON che sto usando è: {"fruits":["apple","orange"]}

+0

Hai chiuso la citazione dopo l'arancione o è un errore di battitura qui in pila? '{" fruits ": [" apple "," orange "]}' – wcislo

+0

sì, sì. Era solo il mio errore di copia di copia del codice di esempio. Esiste ancora un errore di richiesta errata – user2359634

+0

Forse questo potrebbe suggerirti http://stackoverflow.com/a/25523151/1793718 – Lucky

risposta

24

Si utilizza JSON sbagliato. In questo caso si consiglia di utilizzare JSON che assomiglia a questo:

["orange", "apple"] 

Se si deve accettare JSON in quella forma:

{"fruits":["apple","orange"]} 

dovrete creare oggetto wrapper:

public class FruitWrapper{ 

    List<String> fruits; 

    //getter 
    //setter 
} 

e il metodo del controller dovrebbe essere il seguente:

@RequestMapping(value = "/saveFruits", method = RequestMethod.POST, 
    consumes = "application/json") 
@ResponseBody 
public ResultObject saveFruits(@RequestBody FruitWrapper fruits){ 
... 
} 
+1

Risposta corretta. È possibile determinare facilmente cosa ci si potrebbe aspettare eseguendo il processo in senso inverso, scrivendo un metodo che restituisce la rappresentazione JSON di una lista restituisce ["orange", "apple"] come indicato sopra. –