У меня проблема с созданием ответа из моего приложения 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
}