我使用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转换为相同的方法。
任何想法?感谢。
答案 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();
}
}