首页 > 解决方案 > 我如何更改由 Repository.findAll() 在 Spring Boot 中创建的 json 数组的格式

问题描述

我想将这个 json 列表更改为另一种格式,方法是在列表之前放置单词“data”并包含在括号中,就像我将它放在 我使用的其余控制器中的示例一样

   @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"
        }
    ]
    }
 

标签: javaarraysjsonlistspring-boot

解决方案


您可以使用 `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);
}

推荐阅读