java - 使用 JAXB 将 JSON 编码/解码为 Java 类

标签 java json jaxb jax-rs

我使用 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/

相关文章:

java - 如何从 Locale 获取当前时间和时区?

Eclipse - 没有 Java (JRE)/(JDK) ...没有虚拟机

ios - AFJsonRequest 和 AFHttpClient 一起工作吗?

python - json对象解码错误

java - 将 Jaxb Pojos 序列化到多个或不同的命名空间

java - 使用MouseListener画圆圈?

具有动态创建的数据成员的 Java 对象

java - 使用 JSON 填充 ext-js 组合框

java - 如何使用 jaxb2-maven-plugin 预定义 XSD 文件名

xml - JAXB 和 JPA 将数据保存在数据库中