0

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

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

但是当我用 curl 到达那个端点时,我得到一个 415 Unsupported Media Type。有什么方法可以允许像这样的简单绑定,还是我需要实际的带注释的 POJO?

4

1 回答 1

0

假设您不想自己编写MessageBodyReader来告诉框架如何将 json 转换为 generic Map,您仍然可以接受 aString并使用 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();
}
于 2013-07-26T11:30:42.240 回答