如何在 java EE 7 的 JAX-RS 层中获取 Java 对象的 JSON 表示?
how to get JSON representation of Java Objects in JAX-RS layer in java EE 7?
我们目前正在使用 Java EE 5,我们在发送响应之前执行如下操作将 POJO 转换为 JSON。
@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();
}
我们正在使用 google 的 gson API。现在我们正在将代码重组为 Java EE 7 API 兼容,我想知道是否有任何 JSON 转换 API 将 POJO 转换为 JSON .
我知道 Java EE 7 中引入了 JsonObject API。但我仍然想知道如何获得我的 POJO 的 JSON 表示。
JsonObject jsonObject = Json.createObjectBuilder().add("books", myObject);
上面的 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();
}
...将产生一个 JSON 如:
[
{ "title": "Book1", "author": "Foo", ... },
{ "title": "Book2", "author": "Bar", ... },
...
]
如果你想要一个 books
包装器,只需制作一个 bean:
public class BooksWrapper {
private List<Book> books;
public BooksWrapper(List<Book> books) {
this.books = books;
}
public List<Book> getBooks() {
return books;
}
}
并将 REST 方法转换为 return 这种类型:
@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();
}
我们目前正在使用 Java EE 5,我们在发送响应之前执行如下操作将 POJO 转换为 JSON。
@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();
}
我们正在使用 google 的 gson API。现在我们正在将代码重组为 Java EE 7 API 兼容,我想知道是否有任何 JSON 转换 API 将 POJO 转换为 JSON .
我知道 Java EE 7 中引入了 JsonObject API。但我仍然想知道如何获得我的 POJO 的 JSON 表示。
JsonObject jsonObject = Json.createObjectBuilder().add("books", myObject);
上面的 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();
}
...将产生一个 JSON 如:
[
{ "title": "Book1", "author": "Foo", ... },
{ "title": "Book2", "author": "Bar", ... },
...
]
如果你想要一个 books
包装器,只需制作一个 bean:
public class BooksWrapper {
private List<Book> books;
public BooksWrapper(List<Book> books) {
this.books = books;
}
public List<Book> getBooks() {
return books;
}
}
并将 REST 方法转换为 return 这种类型:
@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();
}