【问题标题】:How to receive json param in spring boot如何在 Spring Boot 中接收 json 参数
【发布时间】:2017-08-07 13:10:23
【问题描述】:

我有一个像下面这样的 Json。

{"person":[{"name":"asd","age":"22"},{"name":"asd","age":"22"}]}

但也可能是:

{"person":[{"name":"asd","age":"22"},{"name":"asd","age":"22"}],"city":["NewYork"],"student":"false"}

如何在 Spring Boot 控制器中接收它?

【问题讨论】:

    标签: java rest spring-boot


    【解决方案1】:

    你应该使用@RequestBody注解。

    @RequestMapping("/api/example")
    public String example(@RequestBody String string) {
        return string;
    }
    

    稍后,添加一些验证和业务逻辑。

    您可以使用http://www.jsonschema2pojo.org/ 生成自定义类。生成后,您可以期待您的自定义类,而不是 String

    如需进一步说明,我觉得this tutorial 很有趣。

    【讨论】:

    • 我问了之后,我发现这是一个愚蠢的问题。感谢您仍然回答这个问题。感谢每一次点击“否决票”的家伙,这让我意识到这是一个糟糕的问题问题。
    • 英语不是我的母语,我的表达能力有限。
    • @NBsaw-这个问题并没有显示你所做的努力。在这里提问之前,我建议阅读 How to Askminimal reproducible example - 它们有助于提出好的问题。
    【解决方案2】:

    您可以像下面这样接收 json,Spring Boot 会将您的 json 转换为您定义的模型(例如下面的“评论”模型)。

    @RequestMapping(value = "/create", method = RequestMethod.POST)
    public ResultModel createComment(@RequestBody Comment comment) {...}
    

    【讨论】:

      【解决方案3】:

      1) 你需要定义你的休息控制器。示例

      @Autowired
      UserService userService;
      
      @RequestMapping(value = "/user/", method = RequestMethod.GET)
      public ResponseEntity<List<User>> listAllUsers() {
          List<User> users = userService.findAllUsers();
          if (users.isEmpty()) {
              return new ResponseEntity(HttpStatus.NOT_FOUND);
          }
          return new ResponseEntity<List<User>>(users, HttpStatus.OK);
      }
      

      2) 定义你的 pojo:示例

      public class User {
      
       String name;
       String age;
      
       public User(String name, String age) {
           this.name = name;
           this.age = age;
       }
      
       public String getName() {
           return name;
       }
      
       public String getAge() {
           return age;
       }
      }
      

      3) 定义服务

      @服务 公共类用户服务 {

        public List<User> findAllUsers(){
          // Those are mock data. I suggest to search for Spring-data for    interaction with DB.
           ArrayList<User> users = new ArrayList<>();
           User user = new User("name", "5");
           users.add(user);
           return users;
        }
       }
      

      您可以关注this 教程。如果您只想将 json 消息发送到 Spring Boot 休息控制器,您可以使用像邮递员这样的休息客户端。

      【讨论】:

        猜你喜欢
        • 2022-01-14
        • 2020-04-21
        • 1970-01-01
        • 2019-08-23
        • 2022-08-20
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多