Spring MVC, десериализовать один JSON?

Как я могу легко разделить значения JSON, отправленные в одном запросе?

Учитывая, что я отправляю JSON на свой сервер:

{"first":"A","second":"B"}

Если я реализую следующий метод в Controller:

@RequestMapping(value = "/path", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public void handleRequest(@RequestBody String input) { 
    // ...
}

то параметр input будет представлять собой String со всем объектом JSON, {"first": "A", "second": "B"}. На самом деле мне нужны две отдельные строки (или строка и int, в зависимости от того, что подходит для конкретного запроса) только с двумя значениями (другие пары ключ/значение, которые может прислать клиент, должны быть проигнорированы).

Если бы строки отправлялись как параметры запроса, а не как тело запроса JSON, все было бы просто:

@RequestMapping(value = "/path", method = RequestMethod.POST)
public void handleRequest(@RequestParam("first") String first, 
                          @RequestParam("second") String second) { 
    // ...
}

Я знаю, что могу создать простой класс bean, который можно использовать вместе с аннотацией @RequestBody, который будет содержать A и B при использовании, но это кажется обходным путем, поскольку они будут иметь разное назначение в веб-приложении.

Зависимости: org.springframework : spring-web : 3.1.0.RELEASE org.codehaus.jackson : jackson-mapper-asl : 1.9.3

7
задан matsev 20 January 2012 в 19:42
поделиться