Итак, я пытаюсь реализовать простой клиент из Джерси , который использует общедоступный API для получения времени просмотра фильмов и т. Д. https://api.eventcinemas.co.nz/Api/Movies/GetMovies
Я прошел учебники о том, как это сделатьи реализовали два метода, которые десериализуют ответ JSON в:
- Строка
- Объект (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]