如何在春季启动时收到json param

时间:2017-08-07 13:10:24

标签: java rest spring-boot

我有一个像以下一样的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 Controller中收到它?

3 个答案:

答案 0 :(得分:2)

您应该使用@RequestBody注释。

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

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

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

如需进一步说明,我发现this tutorial很有意思。

答案 1 :(得分:0)

你可以像下面这样收到json,Spring Boot会将你的json转换成你定义的模型(例如" Comment" model model)。

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

答案 2 :(得分:-2)

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)定义服务

@服务     公共类UserService {

  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消息发送到弹簧引导休息控制器,您可以使用像邮递员这样的休息客户端。