我有一个合约类,它包含带有@XmlElement标记的元素。
@XmlElement(name = "balancemoney")
protected Amount balanceMoney;
字符串
使用JAXBContext,我能够生成带有适当标记的xml。
然而,当我使用Jackson提供的库时,JSON标记仍然是“balanceMoney”,而不是“balancemoney”。
如何告诉Jackson考虑使用@XmlElement标记。
下面是实现这一点的代码。
//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));
}
型
3条答案
按热度按时间lhcgjxsq1#
字符串
型
型
kyvafyod2#
根据Using JAXB annotations with Jackson:启用JAXB注解支持,需要设置
mapper.getDeserializationConfig().setAnnotationIntrospector(new JaxbAnnotationIntrospector());
,使Jackson使用JAXB注解。dzhpxtsq3#
如果我们在Jaxbclasses中从Javax迁移到Jakarta,那么下面应该可以工作
字符串