SpringMVC 可以将 HTTP Body 转化为特定的 Form 对象,本文实现了一种方案将读入的 JSON 里部分字段直接转化为 Jackson 库的 JsonNode 来使用的方法。
SpringMVC 里 Controller 中路由映射的方法的参数列表,可以配置 @RequestBody
注解,使某个参数来自解析后的 HTTP 的 Body 内容,我们称之为 Form。
只有一句话需要注意:使用抽象基类 JsonNode,不要使用接口类型 TreeNode。
HTTP 请求样例
{
"id": "1",
"custom": {
"key": "value"
}
}
Form 类
@Data
public class MyForm {
private String id;
private JsonNode custom;
}
本文使用自动生成代码的 lombok 包,@Data
出自该包。
路由映射的方法
@RestController
public class MyController {
@PostMapping("/my")
public Object myMethod(@RequestBody MyForm form) {
...
}
}
大功告成,读入的 form.getCustom()
就是 ObjectNode。