Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 泽西泛型对象_Java_Json_Rest_Object_Jersey - Fatal编程技术网

Java 泽西泛型对象

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

我正在使用Jersey作为JSON句柄处理REST服务。我想创建一个使用泛型对象的方法。有没有一种方法可以在没有bean类的情况下反序列化它

JSON:

当前方法(使用bean类):

我在读一些关于HashMap的东西,它可能会工作,或者可能会将我的对象与一个内部类一起强制转换到同一个方法中


有什么想法吗?谢谢。

通过指定
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();
                }
            }