0

在 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"
}
4

2 回答 2

0

您的输入 JSON 的类型是Map<String, String>这样的,如果您想要无差别的输入,您可以使用它作为您的请求参数并读取您需要的值。

请注意,它@RequestParam查看的是请求参数而不是正文,所以它是一个不同的野兽。

于 2013-02-06T15:02:37.153 回答
0

为此,您可以让 Jersey 按原样(根据注释)传递 String,然后使用 Jackson 对其进行数据绑定ObjectMapper(Jersey 在内部用于 JSON 绑定):

Map<String,Object> map = objectMapper.readValue(param, Map.class);

要访问ObjectMapper,您可以在资源类中使用 JAX-RS 注入注释(@Context我认为?):

@Context
private ObjectMapper objectMapper;
于 2013-02-06T18:43:22.423 回答