在jersey中,Java bean可以在请求体内自动反序列化,但如果我想在不创建特殊类型的情况下读取参数,该怎么办呢?是否可以使用注释来完成此操作。
我目前的代码是:
public class RequestData {
String param;
}
...
public Response readData(RequestData data) {
data.getParam();
...
}
我希望它像:
public Response readData(@RequestParam("param") String param) {
...
}
如果尚未清楚输入JSON是:
{
"param":"some value"
}
答案 0 :(得分:0)
输入JSON的类型为Map<String, String>
,因此如果您想要无差别输入,可以将其用作请求参数并读取所需的值。
请注意@RequestParam
查看请求参数而不是正文,因此它是一个不同的野兽。
答案 1 :(得分:0)
你可以让Jersey按原样传递String(按照注释),然后使用Jackson ObjectMapper
(Jersey内部用于JSON绑定)对数据进行数据绑定:
Map<String,Object> map = objectMapper.readValue(param, Map.class);
要访问ObjectMapper
,您可以在资源类中使用JAX-RS注入注释(我认为@Context
?):
@Context
private ObjectMapper objectMapper;