在我的 spring 项目中,我获得了 JSON 格式的所有输入值。
@ResponseBody UserDto userDto
ResponseBody
注释非常适合捕获数据。但是我怎样才能实现如下目标呢?
@ResponseBody String userId;
在编写上面的代码时,userId 没有获取。是否有任何其他注释可用于在不使用包装器的情况下捕获单个值?或者我可以自己创建自定义功能来实现这一目标吗?
任何建议都会有用。
最佳答案
您可以按原样使用这种方法,您只需要修改您的输入数据:
@SpringBootApplication
public class So45583717Application {
public static void main(String[] args) {
SpringApplication.run(So45583717Application.class, args);
}
@RestController
@RequestMapping("/")
public static class Ctrl {
@PostMapping
public String post(@RequestBody Integer userId) {
return "UserId is: " + userId;
}
}
}
例子:
curl -XPOST 'localhost:8080' -H'Content-Type: application/json' -d'42'
UserId is: 42%
如果您想传递类似 { "userId": 42 }
的东西,您需要一个包装器对象才能使序列化工作。
编辑
另一种方法是接受原始字符串作为主体并自己进行提取工作:
@RestController
@RequestMapping("/")
public static class Ctrl {
private final ObjectMapper mapper = new ObjectMapper();
@PostMapping
public String post(@RequestBody String body) throws IOException {
final JsonNode jsonNode = mapper.readTree(body);
return "UserId is: " + jsonNode.findValue("userId");
}
}
例子:
curl -XPOST 'localhost:8080' -H'Content-Type: application/json' -d'{"userId": 42}'
UserId is: 42%
关于java - 如何在 spring 中从 JSON 输入中捕获整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45583717/