ctw*_*mey 28 json jax-rs jersey
我有一个使用Jersey实现的JAX-RS REST服务.JAX-RS/Jersey的一个很酷的功能就是如何轻松地将POJO变成REST服务,只需简单地添加一些Java注释......包括一个简单的机制,用于将POJO转换为JSON - 使用JAXB注释.
现在,我希望能够利用这种非常酷的JSON-ifying功能用于非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;
}
Run Code Online (Sandbox Code Playgroud)
泽西可以将其中一个变成json而没有额外的信息.我想知道泽西是否已经在API中公开了这个功能,以满足我的需求?到目前为止我找不到运气了......
谢谢!
更新2009-07-09:我已经了解到我可以使用Providers对象几乎完全按照我的意愿行事:
@Context Providers ps;
MessageBodyWriter uw = ps.getMessageBodyWriter(UserInfoImpl.class, UserInfoImpl.class, new Annotation[0], MediaType.APPLICATION_JSON_TYPE);
uw.writeTo(....)
Run Code Online (Sandbox Code Playgroud)
...这将对象作为json写入任何输出流,这对我来说是完美的,但我只能使用@Component对象中的@Context来获取Providers对象.有没有人知道如何从常规的,未注释的POJO访问它?谢谢!
小智 19
Jersey使用几个不同的框架,具体取决于您使用的是mapped(),badgerfish()还是natural()表示法.自然通常是人们想要的.我相信这是使用非常好的(并且非常快)独立的Jackson JSON处理器实现的,它来自Object-> JAXB-> JSON.但Jackson也提供了自己的JAX-RS提供程序来直接使用Object-> JSON.
实际上,他们甚至添加了对JAXB注释的支持.看一下
http://wiki.fasterxml.com/JacksonJAXBAnnotations
我认为这最终是你在寻找的.杰克逊做对象< - > JSON处理......泽西只是为你打电话
这是一个使用JAXB将对象映射到JSON的简单示例(使用Jackson):
http://ondra.zizka.cz/stranky/programovani/java/jaxb-json-jackson-howto.texy
ObjectMapper mapper = new ObjectMapper();
String str = mapper.writeValueAsString(pojoObject);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49948 次 |
| 最近记录: |