如何在@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");
    }
}