【问题标题】:Serialize list of objects to Json, with Jackson & Spring-MVC使用 Jackson 和 Spring-MVC 将对象列表序列化为 Json
【发布时间】:2012-04-06 02:36:32
【问题描述】:

我正在做一个项目,我需要以 json 格式返回一个对象列表。我正在使用带有 jackson 库的 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”直接传给 Jackson,jackson 将 'l' 转换成如下结构:

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

问题是根“ClientsList”。我想在没有 root 的情况下得到这个输出:

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

那么,有人可以帮忙吗?提前致谢!

【问题讨论】:

    标签: json serialization spring-mvc jackson


    【解决方案1】:

    尝试在方法声明中添加@ResponseBody

    public @ResponseBody List getClients()
    

    【讨论】:

      【解决方案2】:

      正如@vacuum 评论的那样,我在控制器中使用@ResponseBody 找到了解决方案(谢谢!):

      @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 中,为了使用 jackson 库对我的列表进行 json 转换。

      现在的输出:

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

      【讨论】:

        猜你喜欢
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-28
        • 2021-12-10
        • 2014-03-11
        • 2016-06-14
        • 2018-11-17
        相关资源
        最近更新 更多