我有一个简单的POST
servlet,并且只想注入JSON
请求的一个属性:
@RestController
public class TestServlet {
@PostMapping(value = "/test", consumes = APPLICATION_JSON_VALUE)
public String test(@Valid @NotBlank @RequestBody String test) {
return test;
}
}
请求:
{
"test": "random value",
"some": "more"
}
结果:test
参数包含整个json,而不仅包含参数值。为什么?如何在没有引入额外的Bean的情况下实现 ?
答案 0 :(得分:3)
您不能指望Spring猜测您要解析json以提取“测试”字段。
如果您不需要多余的bean,请使用Map<String, String>
并使用“ test”键获取值:
@RestController
public class TestServlet {
@PostMapping(value = "/test", consumes = APPLICATION_JSON_VALUE)
public String test(@Valid @NotBlank @RequestBody Map<String, String> body) {
return body.get("test");
}
}