2013-02-07 20 views
11

È possibile utilizzare l'annotazione @RequestParam per analizzare i dati in formato JSON da una richiesta proprio come è possibile analizzare i dati codificati application/x-www-form-urlencoded?Può avviare MVC analizzare JSON in @RequestParams

I.e. se il mio corpo della richiesta è:

{ firstName : "John", lastName : "Doe" } 

Vorrei essere in grado di avere un metodo di ricerca come

public void savePerson(@RequestParam String firstName, @RequestParam lastName) { 
    // handle data 
} 

Se il valore di firstName è "John" e il valore di lastName è "Doe" . Ho provato a farlo funzionare ma funziona solo per i dati codificati application/x-www-form-urlencoded. Quando si inviano dati formattati JSON ottengo una risposta 400 che dice che mancano i parametri.

Sto utilizzando Spring 3.2.0 e l'intestazione Content-Type delle mie richieste ha soddisfatto il formato dei dati.

risposta

5

No. Cambia per questo

public void savePerson(@RequestBody Person) { 

e questo

{"person" : { "firstName" : "John", "lastName" : "Doe" } 
+0

Questo è possibile, ma ora il metodo è legato a questo formato. Non può più accettare dati formattati in altro modo giusto? Posso inviare dati codificati in application/x-www-form-urlencoded che sono compresi da questo metodo? –

+0

@LudwigMagnusson Sono richieste get o post? Hai usato le nuove funzionalità di test della primavera 3.2: sono davvero utili per problemi come questo. – NimChimpsky

+0

Ho provato POST e PUT. Sarebbe importante quale metodo venga usato? Controllerò anche le funzionalità di test. –