I have a contract class that contains elements with @XmlElement tags. For ex
@XmlElement(name = "balancemoney") protected Amount balanceMoney;
Using JAXBContext, I can generate xml with the appropriate tags.
However, when I use the library provided by Jackson, the JSON tag is still used as "balanceMoney" instead of "balancemoney"
How to tell Jackson to consider the @XmlElement tag.
Below is the code that does this.
//Function to display request object. public void displayXML(Object reqResp){ try{ JAXBContext jaxbContext = JAXBContext.newInstance(reqResp.getClass()); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); // output pretty printed jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); ByteArrayOutputStream bStream=new ByteArrayOutputStream(); //jaxbMarshaller.marshal(reqResp, System.out); jaxbMarshaller.marshal(reqResp,bStream ); logger.info(bStream.toString()); }catch(JAXBException e){ logger.info(e.getMessage()); } logger.info("*** Payload is: " + reqResp.toString()); } //Function to display as JSON public void displayJSON(Object reqResp) throws JsonGenerationException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); logger.info(mapper.defaultPrettyPrintingWriter().writeValueAsString(reqResp)); }
source share