Spring Boot修改默认JSON响应

A_B*_*A_B 5 java spring json spring-boot

我有一个REST控制器,它返回一个像这样的产品列表:

电流输出

[  
   {  
      "id":1,
      "name":"Money market"
   },
   {  
      "id":2,
      "name":"Certificate of Deposit"
   },
   {  
      "id":3,
      "name":"Personal Savings"
   }
]
Run Code Online (Sandbox Code Playgroud)

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

期望的输出

{ "data" :
   [  
       {  
          "id":1,
          "name":"Money market"
       },
       {  
          "id":2,
          "name":"Certificate of Deposit"
       },
       {  
          "id":3,
          "name":"Personal Savings"
       }
    ]
}
Run Code Online (Sandbox Code Playgroud)

调节器

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

  List<Product> result = productService.findAll();
  return ResponseEntity.ok(result);
}
Run Code Online (Sandbox Code Playgroud)

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

not*_*est 7

您可以将结果对象放入具有键"data"的值,并将值作为结果.

map.put("data", result);

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

return ResponseEntity.ok(map);


Muh*_*ain 5

使用org.json库:

JSONObject json = new JSONObject();
json.put("data", result);
Run Code Online (Sandbox Code Playgroud)

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