我使用 JAX-RS 和 JAXB 注释成功将 POJO 编码为 JSON。
问题是,当我尝试使用相同的方法来解码我的请求时,它不起作用。据我在documentation中看到的JAX-RS 可以自动将 application/json 字符串编码和解码回 java 类。
我是否需要为此创建自己的 MessageBodyReader,或者框架在不使用 Jackson 库的情况下支持此功能?
最佳答案
我已经在 RESTEasy 中成功做到了。我将其设置为使用和生成 XML 和 JSON。这是一个请求处理程序:
@POST
@Produces(["application/json","application/xml"])
@Consumes(["application/json","application/xml"])
@Path("/create")
public Response postCreate(
ReqData reqData) {
log.debug("data.name is "+ data.getName());
...
return Response.status(Response.Status.CREATED)
.entity(whatever)
.location(whateverURI)
.build();
}
ReqData 是一个 JavaBean,即它有一个默认构造函数,并且有编码器找到的 setter 和 getter。我在 ReqData 中没有任何特殊的 JSON 标记,但在顶部有 @XmlRootElement(name="data") 用于 XML 编码器,在 setter 上有 @XmlElement 标记。
我使用单独的 bean 进行输入和输出,但据我所知,您可以使用相同的 bean。
客户端程序在请求的实体主体中发送 JSON 字符串,并将 Context-Type 和 Accept header 都设置为“application/json”。
关于java - 使用 JAXB 将 JSON 编码/解码为 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1938428/