Ответ 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>


Кто-нибудь знает, как это может быть готово?

622   5  

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();
    }

}

Ref: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-write-a-json-rest-service

Comments

    Ничего не найдено.