如何在@PostMapping中注入单个json参数值

时间:2018-07-17 11:42:41

标签: java json spring spring-web

我有一个简单的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的情况下实现

1 个答案:

答案 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");
    }
}