我有一个名为Container
的POJO,我想将其发送到RESTful Web服务。
客户端:
try {
JAXBContext ctx = JAXBContextFactory.createContext(new Class[] {Container.class}, null);
jsonContent = objectToJSON(ctx, cont);
HttpEntity entity = new ByteArrayEntity(jsonContent.getBytes("UTF-8"));
((HttpPost) httpUriRequest).setEntity(entity);
} catch (JAXBException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
public String objectToJSON(JAXBContext ctx, Object object)
{
try
{
Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");
marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, false);
StringWriter sw = new StringWriter();
marshaller.marshal(object, sw);
return sw.toString();
}
catch (JAXBException e){
System.out.println("--------JAXB EXCEPTION------------\n" );
e.printStackTrace();
LOGGER.error("JAXB marshalling error!", e);
}
return "HELLO";
}
我正在使用REST-easy。
服务器端
@POST
@Consumes({"application/json"})
@Produces({"application/json"})
public String handlePostRequest(Object resource) {
System.out.println("\nINSIDE HANDLE POST: CONTENT CLASS" + resource.getClass());
System.out.println("\nINSIDE HANDLE POST: " + resource);
return "SIDD";
}
在这里,我收到以Object
类型发送的内容:
public String handlePostRequest(Object resource) {
因此SOP将类打印为LinkedHashMap
,并且我的POJO(Container
)的属性在HashMap中设置为键值对。
这里我想使用Object
类型,因为从客户端发送的POJO可能会因请求而异。所以我想写一个通用函数。
现在,有没有一种标准方法可以将LinkedHashMap
(作为对象)转换为java中的POJO?