如何在@PostMapping 中注入单个 json 参数值
How to inject single json parameter value in @PostMapping
我有一个简单的 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?
你不能期望 Spring 猜到你要解析 json 以提取 "test" 字段。
如果您不想要额外的 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");
}
}
我有一个简单的 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?
你不能期望 Spring 猜到你要解析 json 以提取 "test" 字段。
如果您不想要额外的 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");
}
}