我成功使用JAX-RS和JAXB註釋將POJO編組爲JSON。Marshall /將一個JSON解析爲使用JAXB的Java類
問題是,當我試圖使用相同的un-marshalling我的請求它不起作用。據我所知,在documentation JAX-RS可以自動編組和解組應用程序/ JSON字符串回到Java類。
我是否需要爲此創建自己的MessageBodyReader,或者在沒有使用Jackson庫的情況下由框架支持?
我成功使用JAX-RS和JAXB註釋將POJO編組爲JSON。Marshall /將一個JSON解析爲使用JAXB的Java類
問題是,當我試圖使用相同的un-marshalling我的請求它不起作用。據我所知,在documentation JAX-RS可以自動編組和解組應用程序/ JSON字符串回到Java類。
我是否需要爲此創建自己的MessageBodyReader,或者在沒有使用Jackson庫的情況下由框架支持?
我一直在使用Apache Wink,爲此我需要使用JSON提供程序,例如Jettison(一位同事一直在使用Jackson)。我寫了我採取的步驟here
我的猜測是你也需要使用JSON提供程序。有沒有理由不使用傑克遜提供商?
我一直在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標籤,但是我在頂部爲XML編組器提供了@XmlRootElement(name =「data」),並且在setter上有@XmlElement標籤。
我使用單獨的bean進行輸入和輸出,但據我所知可以使用相同的bean。
客戶端程序在請求的實體主體中發送JSON字符串,並將Context-Type和Accept標頭都設置爲「application/json」。
編組爲XML很容易,但我花了一段時間才弄清楚如何編組爲JSON。雖然你找到解決方案後很簡單。
public static String marshalToXml(Object o) throws JAXBException {
StringWriter writer = new StringWriter();
Marshaller marshaller = JAXBContext.newInstance(o.getClass()).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(o, writer);
return writer.toString();
}
public static String marshalToJson(Object o) throws JAXBException {
StringWriter writer = new StringWriter();
JAXBContext context = JSONJAXBContext.newInstance(o.getClass());
Marshaller m = context.createMarshaller();
JSONMarshaller marshaller = JSONJAXBContext.getJSONMarshaller(m);
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshallToJSON(o, writer);
return writer.toString();
}
這個答案是如此無用。什麼是JSONJAXBContex?你沒有提供任何信息。 – 2014-11-14 10:14:28
它似乎是舊版jersey-json的com.sun.jersey.api.json.JSONJAXBContext。 – seanf 2014-12-16 05:10:25
您正在使用哪種JAX-RS實現? – skaffman 2009-12-21 08:49:47