我如何在 Spring Boot 中更改 Repository.findAll() 生成的 json 数组的格式
Posted
技术标签:
【中文标题】我如何在 Spring Boot 中更改 Repository.findAll() 生成的 json 数组的格式【英文标题】:how I change the format of the json array that made by Repository.findAll() in spring boot 【发布时间】:2021-05-29 18:19:34 【问题描述】:我想将此 json 列表更改为另一种格式,方法是在列表前加上“数据”一词并像我放下它的示例一样包含在括号中 我使用的其余控制器
@CrossOrigin(origins = "http://localhost:8080")
@GetMapping("/users")
public List<User> getAllUsers()
return userRepository.findAll();
反应是这样的
[
"id": 1,
"firstName": "test",
"lastName": "test",
"email": "tt",
"createdAt": null,
"createdBy": "12",
"updatedAt": null,
"updatedBy": "12"
,
"id": 2,
"firstName": "test",
"lastName": "test",
"email": "tt",
"createdAt": null,
"createdBy": "12",
"updatedAt": null,
"updatedBy": "12"
]
我想变成那样
"data": [
"id": 1,
"firstName": "test",
"lastName": "test",
"email": "tt",
"createdAt": null,
"createdBy": "12",
"updatedAt": null,
"updatedBy": "12"
,
"id": 2,
"firstName": "test",
"lastName": "test",
"email": "tt",
"createdAt": null,
"createdBy": "12",
"updatedAt": null,
"updatedBy": "12"
]
【问题讨论】:
【参考方案1】:您可以使用 `data 属性创建另一个模型类
public class UserData
private List<User> data
// getters and setters
然后在控制器中更改返回类型
@CrossOrigin(origins = "http://localhost:8080")
@GetMapping("/users")
public UserData getAllUsers()
List<User> users = userRepository.findAll();
return new UserData(users);
或者如果你不想创建额外的模型,你可以使用Map<String, List<User>>
@CrossOrigin(origins = "http://localhost:8080")
@GetMapping("/users")
public Map<String, List<User>> getAllUsers()
List<User> users = userRepository.findAll();
return Collections.singletonMap("data",users);
【讨论】:
以上是关于我如何在 Spring Boot 中更改 Repository.findAll() 生成的 json 数组的格式的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot Restful 中更改大量数据(更新多个数据)
我如何在 Spring Boot 中更改 Repository.findAll() 生成的 json 数组的格式
如何使用 Spring Boot 在 Mongodb 中保存重复项?