Клиент Джерси не может десериализовать объект - PullRequest
0 голосов
/ 28 мая 2018

Итак, я пытаюсь реализовать простой клиент из Джерси , который использует общедоступный API для получения времени просмотра фильмов и т. Д. https://api.eventcinemas.co.nz/Api/Movies/GetMovies

Я прошел учебники о том, как это сделатьи реализовали два метода, которые десериализуют ответ JSON в:

  1. Строка
  2. Объект (POJOs)

Проблема заключается в следующем: метод JSON to String работает правильно, вывод строки в консоль дает ожидаемый результат.However when trying to deserialize to my Java Objects I am always getting null.

Я пробовал несколько простых вещей, таких как разные версии зависимостей, разные вызовы API и т. Д., Но не повезло.Чтобы сэкономить время, я использовал онлайн-конвертер, чтобы получить ответ JSON и заполнить необходимые POJO для десериализации, поэтому я понял, что это правильно.

Если бы кто-то был достаточно любезен, чтобы указать мне правильное направление на то, почему я всегда становлюсь нулевым, я чувствую, что это что-то маленькое или глупое, что я пропустил.Заранее спасибо!

Итак, начнем с моих зависимостей pom.xml ...

pom.xml

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.26</version>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-common</artifactId>
    <version>2.26</version>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.26</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
    <version>2.26</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>

Мой клиент выглядит следующим образом:

MoviesClient:

package nz.co.brownbridge.application;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;

public class MoviesClient {

    protected MoviesResponse getMovieDetails() {
        /*JSON to POJO*/
        Client client = ClientBuilder.newClient();
        WebTarget webTarget = client.target("https://api.eventcinemas.co.nz/Api/Movies/GetMovies");
        MoviesResponse response = webTarget.request().accept(MediaType.APPLICATION_JSON_TYPE).get(MoviesResponse.class);
        return response;
    }

    protected String getMovieDetailsString() {
        /*JSON to String*/
        Client client  = ClientBuilder.newClient();
        WebTarget webTarget = client.target("https://api.eventcinemas.co.nz/Api/Movies/GetMovies");
        String response = webTarget.request().accept(MediaType.APPLICATION_JSON_TYPE).get(String.class);
        return response;
    }

}

и, наконец, основной () класс:

Класс приложения:

package nz.co.brownbridge.application;

public class Application {

    public static void main(String[] args) throws InterruptedException {
        MoviesClient moviesClient = new MoviesClient();

        String stringResponse = moviesClient.getMovieDetailsString();
        MoviesResponse pojoResponse = moviesClient.getMovieDetails();

        System.out.println("Printing String Response...");
        System.out.println();
        System.out.println(stringResponse);
        System.out.println();
        System.out.println();
        System.out.println("Printing POJO Response...");
        System.out.println();
        System.out.println(pojoResponse);


    }
}

Выводит следующее:

Printing String Response...
//super long but correct string response goes here

Printing POJO Response...

ClassPojo [Data = null, Success = null]
...