Ответ Spring MVC - > JSON
У меня есть Java EE backend, и я использую Spring MVC. У меня есть такой вызов AJAX:
function getAllProjects() {
$.getJSON("project/getall", function(allProjects) {
???
});
}
Моя серверная система:
@RequestMapping(value="/getall", method=RequestMethod.GET)
public @ResponseBody ??? getAllProjects() {
???
}
Какой контент я должен реализовать, чтобы он работал? В бэкенд-системе у меня есть из базы данных вызов уникального id и имя проекта, например:
1 => My Test Project
4 => Another One
23 => One More Test
Идентификатор и имя проекта должны быть возвращены в систему frontend, поэтому я могу построить список HTML ul/li следующего вида:
<ul>
<li><a href="/1">My Test Project</a></li>
<li><a href="/4">Another One</a></li>
<li><a href="/23">One More Test</a></li>
</ul>
Кто-нибудь знает, как это может быть готово?
5 ответов:
Вам нужно:
- Добавьте Jackson JSON Mapper в classpath
- Добавьте
<mvc:annotation-driven>в вашу конфигурацию- Возвращение
Map<Integer, String>Для более сложных случаев, когда вам нужно настроить процесс отображения для каждого метода обработчика, вы можете использовать
MappingJacksonJsonViewвместо@ResponseBody, как предложил Stepen C.
Вам необходимо прочитать главу 15.5 руководства пользователя Spring, в которой описывается настройка представлений MVC, и главу 16.10, в которой кратко описывается представление сопоставления JSON. Затем прочитайте javadocs для
MappingJacksonJsonViewи т. д.
Вы также можете использовать org.Json's JSONArray и JSONObject, чтобы построить вывод JSON, затем возвращают строковое значение как @ResponseBody.
Http://www.json.org/javadoc/org/json/JSONObject.html
@RequestMapping(value="/getall", method=RequestMethod.GET) public @ResponseBody String getAllProjects() { ... JSONArray jsonItems = new JSONArray(); JSONObject jsonItem1 = new JSONObject(); jsonItem1.put("id", "1"); jsonItem1.put("name", "My Test Project"); JSONObject jsonItem2 = new JSONObject(); jsonItem2.put("id", "4"); jsonItem2.put("name", "Another one"); jsonItems.put(jsonItem1); jsonItems.put(jsonItem2); return jsonItems.toString(); }Вы должны получить что-то вроде этого в успешном обратном вызове вашего запроса ajax.
[{ "id":"1", "name":"My Test Project" },{ "id":"4", "name":"Another one" }]Эти данные можно использовать либо для добавления ul li с помощью javascript, либо с помощью шаблона _underscore для визуализации пользовательского интерфейса.
Как предлагается здесь: Spring 3 JSON с MVC оформить заказ на этом сайте: http://spring-json.sourceforge.net/ У него есть прекрасный рабочий пример того, как это сделать в spring framework.
Остальные ответы крайне устарели! теперь это очень просто
- Добавьте Jackson2 в свой путь к классу
- использовать
@RestControllerПример:
@RestController public class MyController { @RequestMapping("/thing") public MyThing thing() { return new MyThing(); } }
Comments