Java 泽西泛型对象
我正在使用Jersey作为JSON句柄处理REST服务。我想创建一个使用泛型对象的方法。有没有一种方法可以在没有bean类的情况下反序列化它 JSON: 当前方法(使用bean类): 我在读一些关于HashMap的东西,它可能会工作,或者可能会将我的对象与一个内部类一起强制转换到同一个方法中Java 泽西泛型对象,java,json,rest,object,jersey,Java,Json,Rest,Object,Jersey,我正在使用Jersey作为JSON句柄处理REST服务。我想创建一个使用泛型对象的方法。有没有一种方法可以在没有bean类的情况下反序列化它 JSON: 当前方法(使用bean类): 我在读一些关于HashMap的东西,它可能会工作,或者可能会将我的对象与一个内部类一起强制转换到同一个方法中 有什么想法吗?谢谢。通过指定String参数类型,您可以通过单个方法实现消费任何东西 @Path("/loginCheck") @POST @Consumes({ MediaType.APPLICATION
有什么想法吗?谢谢。通过指定
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,就不需要使用它。您可以在中阅读有关此主题的更多信息。基于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();
}
}
除了我的答案之外,我想问一下,通过在一种方法中使用不同的对象,您想要实现什么?可能有更简单的解决方案。@AlekseiBudiak您的答案看起来很好,适用于这些简单的json,但我想在我有嵌套json时跳过bean的映射,比如只为反序列化而不创建临时类。该解决方案应适用于任何json对象(包括带有嵌套对象的对象)。除了我的建议,还有其他选择-。您可以使用它们向Jersey添加自定义反序列化逻辑。不幸的是,没有一种简单的方法可以获得特定于请求的某种时态类。@Jarrod Roberson这不是任何链接问题的重复。请仔细阅读。
@Path("/loginCheck")
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Object checkLoginStatus(String pureJsonString) {
}
@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();
}
}