泽西通用对象

时间:2017-08-22 16:32:29

标签: java json rest object jersey

我使用Jersey为我的JSON句柄处理REST服务。我想制作一个消耗通用对象的方法。有没有办法在没有bean类的情况下反序列化它?

JSON:

{
    "id": "2",
    "name": "John"  
}

当前方法(使用bean类):

@Path("/loginCheck")
    @POST
    @Consumes({ MediaType.APPLICATION_JSON })
    @Produces({ MediaType.APPLICATION_JSON })
    public Object checkLoginStatus(Object a) {
      // Check login status function
    }

我正在阅读有关HashMap的内容,该内容可能有效,或者可能将内部类的Object转换为相同的方法。

任何想法?感谢。

2 个答案:

答案 0 :(得分:-1)

通过指定String参数类型,您可以通过单一方法消费任何内容。

@Path("/loginCheck")
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Object checkLoginStatus(String pureJsonString) {
}

Map表示仅适用于application/x-www-form-urlencoded MIME类型,因此如果您想使用JSON,则不是这种情况。您可以在Jersey docs中了解有关此主题的更多信息。

答案 1 :(得分:-1)

根据Aleksei的回答,我找到了一个解决方案,我发布它希望它对某人有所帮助:

            @Path("/loginCheck")
            @POST
            @Consumes({ MediaType.APPLICATION_JSON })
            @Produces({ MediaType.APPLICATION_JSON })
            public Object checkLoginStatus(String a) {
                JSONObject jsonAnswer = new JSONObject();
                ObjectMapper mapper = new ObjectMapper();
                try {
                    JsonNode rootNode = mapper.readTree(a);
                    System.out.println(rootNode.get("id").getIntValue());

                } catch (JsonProcessingException e) {
                    e.printStackTrace();
                }
            }