J'ai un POJO appelé Container
que je veux envoyer au service Web RESTful.Convertir LinkedHasmap en POJO?
côté client:
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";
}
J'utilise REST facile.
côté serveur
@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";
}
Ici, je reçois le contenu envoyé comme Object
Type: public String handlePostRequest(Object resource) {
Alors imprime SOP la classe comme LinkedHashMap
et les attributs de mon POJO (Container
) sont situés dans le HashMap comme paire de valeur de clé.
Ici, je veux utiliser le type Object
car mes POJO envoyés du client peuvent différer entre les demandes. Donc, je veux écrire une fonction générique.
Maintenant, y at-il un moyen standard pour convertir LinkedHashMap
(en passant en tant qu'objet) à mon POJO en java ??
Dans ce cas, quel sera le code client? Par exemple actuellement je fais: 'JAXBContext ctx = JAXBContextFactory.createContext (nouvelle classe [] {Container.class}, null); jsonContent = objetToJSON (ctx, cont); '. Cela fournit une chaîne json de la classe 'Container' –
Vous pouvez utiliser' GsonBuilder' de 'com.google.gson' pour convertir un objet en JSON; quelque chose comme 'new GsonBuilder(). create(). toJson (votreObjet)'. Ensuite, donnez ce JSON au corps de la requête. – Egemen