【问题标题】:How to convert web service response input stream to java object?如何将 Web 服务响应输入流转换为 java 对象?
【发布时间】:2011-01-21 19:11:07
【问题描述】:
在我的网络服务上执行 http 请求后,我得到一个 javax.ws.rs.core.Response 对象。当我在Response 对象上调用getEntity 方法时,我得到一个输入流,它是JSON 的字符串表示。有谁知道我可以/应该如何将此字符串转换为 java 对象?因为,我使用的是 CXF,我可以使用 JAXBContext 吗?或者我必须创建一个自定义消息正文阅读器吗?谢谢。
【问题讨论】:
标签:
java
web-services
json
cxf
jax-rs
【解决方案1】:
Jackson 具有内置的 JAX-RS 支持。
见 org.codehaus.jackson.jaxrs.JacksonJsonProvider
和 org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider
【解决方案2】:
这是一个例子。有一天它会帮助某人。 (这是使用示例 XML 输入)
@POST
@Path("/unmarshall")
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_XML)
public Response unmarshall(InputStream inputStream) throws JAXBException {
JAXBContext jaxbContext = JAXBContext.newInstance(MyJaxbClass.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object unmarshal = unmarshaller.unmarshal(inputStream);
return Response.ok().entity(unmarshal).build();
}