如何在JavaEE7中获得JAX-RS层中Java对象的JSON表示?
我们目前正在使用JavaEE5,在发送响应之前,我们将POJO转换为JSON如何在JavaEE7中获得JAX-RS层中Java对象的JSON表示?,json,jakarta-ee,gson,java-ee-7,jsonobject,Json,Jakarta Ee,Gson,Java Ee 7,Jsonobject,我们目前正在使用JavaEE5,在发送响应之前,我们将POJO转换为JSON @GET @Path("/books") @Produces(MediaType.APPLICATION_JSON) public Response getBooks() { List<Book> listOfBooks = getMiscService().getbooks(); String response = "{\"books\":" + gson
@GET
@Path("/books")
@Produces(MediaType.APPLICATION_JSON)
public Response getBooks() {
List<Book> listOfBooks = getMiscService().getbooks();
String response = "{\"books\":" + gson.toJson(listOfBooks) + "}";
return Response.status(Response.Status.OK).entity(response).build();
}
上面的myObject需要是我的对象的JSON表示,对吗
我正在考虑这个问题。但这仍然使用Gson
JsonObject jsonObject = Json.createObjectBuilder().add("books", gson.toJson(myObject));
这里的推荐方式是什么
谢谢JAX-RS将把您的对象转换为JSON,无需手动操作。即,以下代码:
@GET
@Path("/books")
@Produces(MediaType.APPLICATION_JSON)
public Response getBooks() {
List<Book> listOfBooks = getMiscService().getbooks();
return Response.status(Response.Status.OK).entity(listOfBooks).build();
}
如果您想要一个书籍
包装器,只需制作一个bean:
public class BooksWrapper {
private List<Book> books;
public BooksWrapper(List<Book> books) {
this.books = books;
}
public List<Book> getBooks() {
return books;
}
}
公共类BooksWrapper{
私人书目;
公共书籍包装(列出书籍){
这本书=书;
}
公共列表getBooks(){
还书;
}
}
并将REST方法转换为返回此类型:
@GET
@Path("/books")
@Produces(MediaType.APPLICATION_JSON)
public Response getBooks() {
List<Book> listOfBooks = getMiscService().getbooks();
BooksWrapper result = new BooksWrapper(listOfBooks);
return Response.status(Response.Status.OK).entity(result).build();
}
@GET
@路径(“/books”)
@产生(MediaType.APPLICATION_JSON)
公众回应{
listOfBooks=getMissService().getbooks();
BooksWrapper结果=新的BooksWrapper(图书列表);
返回Response.status(Response.status.OK).entity(result.build();
}
我想只有某些提供商会转换为JSON,比如RestEasy或Jersey?对的无论如何,这是一个比使用gson更好的方法,我想这肯定很容易,但我相信这是标准/按规范的行为。
public class BooksWrapper {
private List<Book> books;
public BooksWrapper(List<Book> books) {
this.books = books;
}
public List<Book> getBooks() {
return books;
}
}
@GET
@Path("/books")
@Produces(MediaType.APPLICATION_JSON)
public Response getBooks() {
List<Book> listOfBooks = getMiscService().getbooks();
BooksWrapper result = new BooksWrapper(listOfBooks);
return Response.status(Response.Status.OK).entity(result).build();
}