📜  Spring Boot 将 json 映射到控制器中的对象 - Javascript (1)

📅  最后修改于: 2023-12-03 15:05:15.920000             🧑  作者: Mango

Spring Boot 将 JSON 映射到控制器中的对象 - Javascript

在 Spring Boot 应用程序中,你可以将接收到的 JSON 数据映射到控制器中的对象中。这使得在控制器中处理和验证输入数据变得更加轻松。

这个功能由 Jackson JSON 处理库提供支持,Spring Boot 已经默认集成了这个库。

如何使用

首先,你需要在你的控制器方法的参数列表中添加一个注解 @RequestBody,表示你要将请求体中的 JSON 数据映射到这个参数对象中。

例如,假设你的请求体是一个包含 "name" 和 "age" 字段的 JSON 对象,你可以将其映射到如下的 Person 对象中:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
}
@RestController
public class MyController {

    @PostMapping("/person")
    public ResponseEntity<String> createPerson(@RequestBody Person person) {
        // Do something with person object
        return ResponseEntity.ok("Person created successfully");
    }

}

在这个示例中,Person 对象的构造函数将会使用请求体中的 "name" 和 "age" 值来初始化对象。

验证输入数据

使用 Java Bean Validation API 可以很容易地验证输入数据。例如,你可以添加一些简单的注解来验证一个年龄是否是介于 18 和 60 之间的整数:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  
  @Min(18)
  @Max(60)
  @Digits(integer = 2, fraction = 0)
  public int getAge() {
    return age;
  }
}

@RestController
public class MyController {

    @PostMapping("/person")
    public ResponseEntity<String> createPerson(@Valid @RequestBody Person person) {
        // Do something with person object
        return ResponseEntity.ok("Person created successfully");
    }

}

如果接收到的 JSON 中的年龄不符合上述验证规则,则将会抛出异常。这个异常会被 Spring Boot 自动捕获并返回一个适当的错误响应。

总结

Spring Boot 提供了一种简单而强大的方法,可以将 JSON 数据映射到控制器中的对象中。这使得在控制器中处理和验证输入数据变得更加轻松。通过结合 Java Bean Validation API,你可以轻松地验证用户的输入数据,从而减少潜在的安全漏洞。