2013-02-07 10 views
11

Czy można użyć adnotacji @RequestParam, aby przetworzyć dane sformatowane w jsonie z żądania, tak jak można analizować dane kodowane application/x-www-form-urlencoded?Czy można sparsować MVC JSON w @RequestParams

tj. jeśli moje ciało prośba brzmi:

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

Chciałbym móc mieć metoda wygląda jak

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

Jeżeli wartość firstName jest „John”, a wartość lastName jest „Kowalski” . Próbowałem wykonać tę operację, ale działa ona tylko dla zakodowanych danych application/x-www-form-urlencoded. Wysyłając sformatowane dane w formacie json otrzymuję odpowiedź 400 z informacją, że brakuje paramperów.

Używam Spring 3.2.0, a nagłówek moich żądań jest zgodny z formatem danych.

Odpowiedz

5

nr Zmiana tej

public void savePerson(@RequestBody Person) { 

i to

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

To jest możliwe, ale teraz metoda jest zobowiązany do tego formatu. Nie może już akceptować danych sformatowanych w inny sposób, prawda? Czy mogę wysyłać dane zakodowane w aplikacji/x-www-urlen, które są rozumiane za pomocą tej metody? –

+0

@LudwigMagnusson Są to żądania pobierania lub wysyłania pocztą? Czy korzystałeś z nowych funkcji testowania sprężyny w wersji 3.2 - są one bardzo przydatne w przypadku takich problemów. – NimChimpsky

+0

Próbowałem POST i PUT. Czy ma znaczenie jaką metodę stosuje się? Sprawdzę również funkcje testowania. –

Powiązane problemy