#java #arrays #json #list #spring-boot
#java #массивы #json #Список #spring-boot
Вопрос:
Я хочу изменить этот список json на другой формат, поместив слово «данные» перед списком и заключив его в круглые скобки, как в примерах, которые я записал
в rest controller, который я использую
@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:
Вы можете создать другой класс модели с `свойством данных
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);
}