尝试将整数作为实体

时间:2017-07-24 14:18:14

标签: java jersey

我注意到当我使用Response.status(201).entity(id).build时,它会返回以下错误:

严重:找不到媒体类型= application / json的MessageBodyWriter,type = class java.lang.Integer,genericType = class java.lang.Integer。

    @POST
    @Produces({"application/json"})
    public Response createUser(
            @NotNull @FormParam("username") String username,
            @NotNull @FormParam("password") String password,
            @NotNull @FormParam("role") String role) {

        int id = 12;
        return Response.status(201).entity(id).build();

    }

2 个答案:

答案 0 :(得分:1)

单个Integer对象无法转换为JSON,因为JSON就像地图(键值对)。你必须选择:

1)将返回的类型更改为文本

@Produces({"text/plain"})

2)创建一个表示单个值为JSON的类,如:

class IntValue {
    private Integer value;

    public IntValue(int value) {
        this.value = value;
    }

    // getter, setter
}

然后执行以下操作

return Response.status(201).entity(new IntValue(id)).build();

答案 1 :(得分:0)

"1"无效JSON。您应该将号码包装到某个实体或将"application/json"更改为"application/text"