import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class JacksonXmlTests {
@Test
void test() throws JsonProcessingException {
XmlMapper xmlMapper = new XmlMapper();
XmlObeject xmlObeject = new XmlObeject();
xmlObeject.setName("XML");
List<XmlObejectInfo> xmlObejectInfos = new ArrayList<>();
XmlObejectInfo xmlObejectInfo = new XmlObejectInfo();
xmlObejectInfo.setAge(25);
xmlObejectInfos.add(xmlObejectInfo);
xmlObeject.setXmlObejectInfos(xmlObejectInfos);
String xmlString = xmlMapper.writeValueAsString(xmlObeject);
log.info("{}", xmlString);
XmlObeject xmlObj = xmlMapper.readValue(xmlString, XmlObeject.class);
log.info("{}", xmlObj);
有时候我们序列化内容可能无法转换成我们想要的,因为内层的@JacksonXmlRootElement(localName = “XXX”),没有生效,我们可以用反射获取到传过来的类,然后获取JacksonXmlRootElement的注解,序列化成字符串后通过.replace(“”, “<”+otherHeader+“>”).replace(“”, “</”+otherHeader+“>”)的方式替换掉我们的请求头。