我在使用JPA中的RESTful应用程序创建响应时遇到问题。这就像Filmaffinty或imbd网站的模拟。
我只想从电影(id,年份,名字)中仅返回特定值。此外,我想返回项目搜索的值(如果是电影,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添加“新值”。我的意思是,我有类电影,我想要返回JSON项目搜索的类型。示例:如果我搜索电影,则JSON必须返回itemType = movie,如果是tv_show,则为itemType = serie
例如,如果我搜索泰坦尼克号,这应该是我的JSON:
{
"id": 18926,
"name": "Titanic",
"itemType": "Movie",
"year": 1997
}
答案 0 :(得分:0)
不要修改JSON - 这只是对所返回对象的渲染。
相反,返回不同的对象类型,可能是SearchResult
对象。根据需要创建,填充,修改它,然后让JSON库完成它的工作。