#spring #json #java
Здравствуйте. Как принять и прочитать массив строк при помощи Spring 3? В качестве JSON-запроса выступает массив строк. Выглядит он так: ["cnh","dfd","asd"] Вот то, что принимает на сервере: @RequestMapping(value = "/deleteelements.form") @ResponseBody public String deleteElements(/* ??? */) { }
Ответы
Ответ 1
Попробуйте @RequestMapping(value = "/deleteelements.form") @ResponseBody public String deleteElements(@RequestBody String elements[]) { } Разумеется, для этого Spring должен видеть библиотеку Jackson. В случае с мавеном добавьте зависимости:org.codehaus.jackson jackson-core-lgpl 1.8.4 org.codehaus.jackson jackson-mapper-lgpl 1.8.4 Или просто киньте соответствующие jar-ники в WEB-INF/lib. Кроме того, у входящего HTTP-запроса заголовок Content-type должен соответствовать application/json. commons-collections commons-collections 3.2.1 Ответ 2
UPD На самом деле интеграция с Jackson реализована в Spring (MappingJacksonHttpMessageConverter), достаточно только подключить его библиотеки, см. ответ @Nofate. Для того, чтобы заработал вариант @Nofate, необходимо сначала добавить конвертер, так как в Спринге нет конвертера для массивов строк. На SO показывается, как это можно сделать (кофигурирование вроде бы должно быть упрощено в Spring 3.1M1): вкратце это просто реализация интерфейса/абстрактного класса конвертера и его регистрация. В самом конвертере можно использовать, к примеру, Jackson, для преобразования. Если это только один раз нужно, то можно сделать и напрямую: @RequestMapping(value = "/deleteelements.form") @ResponseBody public String deleteElements(@RequestBody byte[] data) { // делает то же самое, что делали бы конвертере, // скармливаем Jackson'у байтовый массив }
Комментариев нет:
Отправить комментарий