繁体   English   中英

仅在json中返回一些值,而不是完整实体对象

[英]Return only some values in json instead full entity object

我在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 =电影,如果它是tv_show,则itemType =系列

例如,如果我搜索泰坦尼克号,这应该是我的JSON:

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

不要修改JSON-只是返回对象的呈现。

而是,返回不同的对象类型,也许是SearchResult对象。 根据需要创建,填充,修改它,然后让JSON库完成它的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM