【发布时间】:2009-07-01 23:03:05
【问题描述】:
我有一个使用 Jersey 实现的 JAX-RS REST 服务。 JAX-RS/Jersey 的一个很酷的特性是 POJO 可以很容易地转换为 REST 服务,只需添加一些 Java 注释......包括一种将 POJO 转换为 JSON 的简单机制 - 使用 JAXB 注释。
现在,我希望能够将这种酷炫的 JSON 化功能用于非 REST 目的 - 我希望能够将其中一些对象序列化到磁盘,作为 JSON 文本。这是我想要序列化的示例 JAXB 对象:
@XmlRootElement(name = "user")
public class UserInfoImpl implements UserInfo {
public UserInfoImpl() {}
public UserInfoImpl(String user, String details) {
this.user = user;
this.details = details;
}
public String getUser() { return user; }
public void setUser(String user) { this.user = user; }
public String getDetails() { return details; }
public void setDetails(String details) { this.details = details; }
private String user;
private String details;
}
Jersey 可以将其中之一转换为 json,无需额外信息。我想知道 Jersey 是否已经在 API 中公开了此功能以满足我的需求?到目前为止我还没有找到它......
谢谢!
UPDATE 2009-07-09:我了解到我可以使用 Providers 对象来几乎做我想做的事:
@Context Providers ps;
MessageBodyWriter uw = ps.getMessageBodyWriter(UserInfoImpl.class, UserInfoImpl.class, new Annotation[0], MediaType.APPLICATION_JSON_TYPE);
uw.writeTo(....)
... 这会将对象作为 json 写入任何输出流,这对我来说是完美的,但我只能使用 @Component 对象中的 @Context 获取 Providers 对象。有谁知道如何从常规的、未注释的 POJO 访问它?谢谢!
【问题讨论】:
-
我也在尝试查找这方面的信息,但我正在寻找仅使用 javax.*/java.* API 的东西(我不介意为 JUnit 测试添加额外的库,但是我希望他们出现在 JEE6 RI
-
我也可以调用一个类进行引导。