使用Jackson </string,>在JAX-RS资源中绑定一个简单的Map <string,string =“”>

时间:2013-07-25 19:02:54

标签: json jackson jax-rs

我有一个JAX-RS资源类,对于其中一个方法,我想将一个表示JSON Map<String, String>的简单POST绑定到服务器,而不是创建一个实体类对于这么短的请求。我以为我可以做到以下几点:

@POST
public Response create(Map<String, String> json) {
    //business logic...
    return Response.created(UriBuilder.fromPath("{id}").build(id)).build();
}

但是当我用curl命中该端点时,我得到415不支持的媒体类型。有没有办法允许像这样的简单绑定,还是需要实际注释的POJO?

1 个答案:

答案 0 :(得分:0)

假设您不想编写自己的MessageBodyReader来告诉框架如何将json转换为通用Map,您仍然可以接受String并使用Jackson阅读它如:

@POST
public Response create(String json) {
    Map<String,Object> map = new ObjectMapper().readValue(json, Map.class);
    //business logic...
    return Response.created(UriBuilder.fromPath("{id}").build(id)).build();
}