31

I want to know how I can extract a List<String> as response from the jersey-2.0 client.

I have already tried this,

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

But, the above code is not working. It is not returning the expected List<String> but, a null value instead.

user2004685
  • 8,721
  • 4
  • 29
  • 49
Saurabh
  • 6,001
  • 3
  • 38
  • 40

4 Answers4

61

You can get your service response as Response class object and, then parse this object using readEntity(...) method.

Here is a quick code snippet:

List<String> list = client
                      .target(url)
                      .request(MediaType.APPLICATION_JSON)
                      .get(Response.class)
                      .readEntity(new GenericType<List<String>>() {});
/* Do something with the list object */
user2004685
  • 8,721
  • 4
  • 29
  • 49
1
String listString= serviceResponse.readEntity(String.class);
Gson gson=new Gson();
Type type = new TypeToken<List<String>>(){}.getType();
List<String> list = gson.fromJson(listString, type);

Get response string and then convert to List by using gson library

Saurabh
  • 6,001
  • 3
  • 38
  • 40
  • 1
    This answer turned up in the low quality review queue, presumably because you don't provide any explanation of the code. If this code answers the question, consider adding adding some text explaining the code in your answer. This way, you are far more likely to get more upvotes — and help the questioner learn something new. – lmo Sep 07 '16 at 22:12
0

First add jackson dependency

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.27</version>
</dependency>

Then create Client Config

ClientConfig config = new ClientConfig();
config.register( JacksonFeature.class );

Finally create the client through the ClientConfig

List<String> list = ClientBuilder.newClient( config )
               .target( uri )
               .request()
               .get( Response.class )
               .readEntity( List.class );
Ali Yeganeh
  • 557
  • 8
  • 13
  • This will work, but will show an unchecked cast warning converting from List to List. The answers using GenericType are more accurate. – John Calcote May 20 '21 at 23:26
-2

1) Take your Response in the then parse the Response Object using readEntity() method.

List<String> list = client.target(url).
request(MediaType.APPLICATION_JSON).get(Response.class).readEntity(new GenericType<List<String>>() {
});