Вернуть только некоторые значения в JSON вместо полного объекта сущности - PullRequest
0 голосов
/ 29 апреля 2018

У меня проблема с созданием ответа из моего приложения RESTful в JPA. Это похоже на симуляцию сайтов Filmaffinty или imbd.

Я хочу вернуть только конкретные значения из фильма (идентификатор, год, имя). Также я хочу вернуть значение элемента поиска (если это фильм, MOVIE, это tv_show, SERIE). Это значение не является атрибутом сущности.

import com.fasterxml.jackson.annotation.JsonProperty;
@Path("/search")
@RequestScoped
public class SearchRESTService extends RESTService {

@EJB
MovieService ms;

@EJB
ListMovieService lms;

@EJB
SeriaService ss;

@GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON)

public Response search(@Context HttpServletRequest req) {
    if (!checkLoggedIn(req)) {
        throw new WebApplicationException("User not logged.");
    }
    String name = req.getParameter("n_name");
    String typeFilter = req.getParameter("movie");
    SearchResult sr = new SearchResult();
    sr.movies = ms.getAllMovies();
    switch (typeFilter){
        case "movie":
            sr.movies = ms.getMovieByName(name);
            break;
        /*case "tv_show":
            sr.series = ms.getSeriesByName(name);
            break;
            */

    }

    return buildResponse(sr);
}
static class SearchResult {
    @JsonProperty("Movies")
    Collection<Movie> movies;
    @JsonProperty("List_Movies")
    Collection<ListMovie> listMovies;
    @JsonProperty("Series")
    Collection<Seria> series;
}
}

Можно ли добавить "новое значение" в JSON. Я имею в виду, у меня есть класс Movie, и я хочу вернуть JSON тип поиска элемента. Пример: если я ищу фильм, JSON должен вернуть itemType = movie, если это tv_show, itemType = serie

Например, это должен быть мой JSON, если я ищу Титаник:

{
     "id": 18926,
     "name": "Titanic",
     "itemType": "Movie",
     "year": 1997
}

1 Ответ

0 голосов
/ 29 апреля 2018

Не изменяйте JSON - это всего лишь рендеринг возвращаемого объекта.

Вместо этого верните объект другого типа, возможно, объект SearchResult. Создайте, заполните, измените его по своему усмотрению, затем позвольте библиотеке JSON делать свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...