Я использую платформу Jersey для создания Rest API. API создает учетную запись для гонщика и водителя для совместного использования приложения. Здесь приведены зависимости для моего проекта.
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- artifactId>jersey-container-servlet</artifactId -->
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-binding</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
</dependencies>
У меня возникла проблема с сериализацией Java объекта «Пользователь» (который содержит всю информацию о поездках, опубликованных водителем) в JSON объект, потому что я хочу, чтобы указанные c атрибуты были преобразованы обратно в JSON. Вот мои атрибуты класса «Пользователь»:
private String first_name;
private String last_name;
private String phone;
private String picture;
private boolean is_active;
private int aid;
private List<Rating> drivers_rating;
private List<Rating> riders_rating;
Но, когда я делаю GET-запрос для получения рейтинга драйверов, я хочу, чтобы только ответ JSON содержал «first_name, phone и drivers_rating». Вот что я попробовал:
@Path("{aid}/driver")
@GET
@Produces(MediaType.APPLICATION_JSON)
public User viewDriverRatings(@PathParam("aid") int aid) {
return repo.viewDriverRatings(aid);
}
Но это возвращает ответ JSON со всеми атрибутами. Что я должен сделать, чтобы возвращать только указанные c атрибуты в JSON?