Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 如何获取列表<;字符串>;作为jersey2客户的回应_Java_Json_Jersey 2.0_Jersey Client - Fatal编程技术网

Java 如何获取列表<;字符串>;作为jersey2客户的回应

Java 如何获取列表<;字符串>;作为jersey2客户的回应,java,json,jersey-2.0,jersey-client,Java,Json,Jersey 2.0,Jersey Client,我想知道如何从jersey-2.0客户端提取列表作为响应 我已经试过了 List<String> list = client .target(url) .request(MediaType.APPLICATION_JSON) .get(new GenericType<List<String>>(){}); List=客户端 .t

我想知道如何从
jersey-2.0
客户端提取
列表作为响应

我已经试过了

List<String> list = client
                      .target(url)
                      .request(MediaType.APPLICATION_JSON)
                      .get(new GenericType<List<String>>(){});
List=客户端
.target(url)
.request(MediaType.APPLICATION_JSON)
.get(新的GenericType(){});

但是,上面的代码不起作用。它不会返回预期的
列表
,而是返回一个
null
值。

您可以将服务响应作为
响应
类对象,然后使用
readEntity(…)
方法解析此对象

下面是一个快速代码片段:

List<String> list = client
                      .target(url)
                      .request(MediaType.APPLICATION_JSON)
                      .get(Response.class)
                      .readEntity(new GenericType<List<String>>() {});
/* Do something with the list object */
List=客户端
.target(url)
.request(MediaType.APPLICATION_JSON)
.get(Response.class)
.readEntity(新的GenericType(){});
/*对列表对象执行一些操作*/
1)在中获取响应,然后使用readEntity()方法解析响应对象

List List=client.target(url)。
request(MediaType.APPLICATION_JSON).get(Response.class).readEntity(新的GenericType()){
});
String listString=servicesponse.readEntity(String.class);
Gson Gson=新的Gson();
Type Type=new-TypeToken(){}.getType();
List=gson.fromJson(listString,type);

获取响应字符串,然后使用gson库将其转换为列表

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.27</version>
</dependency>
最后通过ClientConfig创建客户机

List<String> list = ClientBuilder.newClient( config )
               .target( uri )
               .request()
               .get( Response.class )
               .readEntity( List.class );
List List=ClientBuilder.newClient(配置)
.target(uri)
.request()
.get(Response.class)
.readEntity(List.class);

我得到的大小为5,但调试时显示所有元素都为空。但是元素都存在。您可以共享您尝试使用的服务的JSON响应吗?这是JSON响应[“孟买”、“德里”、“加尔各答”]这不是
列表
而是
JSONArray
。有一点不同。谢谢,我将jsonString转换为list.String listString=serviceResponse.readEntity(String.class)并转换回jsonArray,然后再转换为list此答案出现在低质量的审阅队列中,可能是因为您没有提供任何代码解释。如果这个代码回答了这个问题,考虑添加一些解释你答案中的代码的文本。这样,你就更有可能获得更多的选票,并帮助提问者学习新的东西。这会起作用,但会显示一个未经检查的警告,从一个列表转换到另一个列表。使用GenericType的答案更准确。
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.27</version>
</dependency>
ClientConfig config = new ClientConfig();
config.register( JacksonFeature.class );
List<String> list = ClientBuilder.newClient( config )
               .target( uri )
               .request()
               .get( Response.class )
               .readEntity( List.class );