Spring Boot修改默认JSON响应

时间:2017-03-16 18:58:38

标签: java json spring spring-boot

我有一个REST控制器,它返回如下产品列表:

当前输出

[  
   {  
      "id":1,
      "name":"Money market"
   },
   {  
      "id":2,
      "name":"Certificate of Deposit"
   },
   {  
      "id":3,
      "name":"Personal Savings"
   }
]

为了让我们的JS网格库工作,我需要修改响应,如下所示:

所需的输出

{ "data" :
   [  
       {  
          "id":1,
          "name":"Money market"
       },
       {  
          "id":2,
          "name":"Certificate of Deposit"
       },
       {  
          "id":3,
          "name":"Personal Savings"
       }
    ]
}

控制器

@RequestMapping(value = "/api/products", method = RequestMethod.GET)
public ResponseEntity<?> getAllProducts() {

  List<Product> result = productService.findAll();
  return ResponseEntity.ok(result);
}

是否有一种使用本机Spring库修改JSON响应的简单方法?

2 个答案:

答案 0 :(得分:6)

您可以将结果对象放入带有键&#34;数据&#34;的地图中。和结果的价值。

map.put("data", result);

然后从rest方法返回map对象。

return ResponseEntity.ok(map);

答案 1 :(得分:3)

使用org.json库:

JSONObject json = new JSONObject();
json.put("data", result);
  

put方法在对象中添加或替换值。