Сериализуйте список объектов в Json с помощью Jackson & Spring-MVC - PullRequest
2 голосов
/ 21 марта 2012

Я работаю над проектом, в котором мне нужно вернуть список объектов в формате json.Я использую среду Spring-mvc с библиотекой Джексона для выполнения сериализации.

Мне нужна структура json, содержащая непосредственно объекты, а не имя: массив объектов.

Это мой упрощенный код:

@RequestMapping(method = RequestMethod.GET, value = "/clients")
public List getClients(
        @RequestParam(value = "estat", required = false) String estat
        throws Exception {

    List<Clients> l = s.mdClients(estat);
    return l;
}

Этот «return l», который вы видите, идет непосредственно к Джексону, и Джексон преобразует «l» в структуру типа:

{
  "ClientsList": [
    {
      "x": "2",
      "y": "5"
    }
]}

Проблемаявляется корнем "ClientsList".Я хочу получить этот вывод без рута:

{
  [
    {
      "x": "2",
      "y": "5"
    }
]}

Итак, кто-нибудь может помочь?заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 21 марта 2012

Попробуйте добавить @ResponseBody в объявлении метода:

public @ResponseBody List getClients()
2 голосов
/ 22 марта 2012

Я нашел решение, используя @ResponseBody в моем контроллере, как прокомментировал @vacuum (спасибо!):

@RequestMapping(method = RequestMethod.GET, value = "/clients")
public @ResponseBody List getClients(
    @RequestParam(value = "estat", required = false) String estat
    throws Exception {

List<Clients> l = s.mdClients(estat);
return l;
}

Мне также нужно было изменить метод преобразования выходных данных, используя

<mvc:annotation-driven /> 

в моем servlet-context.xml, чтобы использовать библиотеку Джексона для преобразования моего списка в json.

Вывод сейчас:

[
  {
   "x": "2",
   "y": "5"
  }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...