java - xmlMapper 允许在反序列化期间使用任何根元素
问题描述
我有这样的代码
public class Xml {
public static void main(String[] args) throws JsonProcessingException {
String xmlString = "<password><plainPassword>12345</plainPassword></password>";
XmlMapper xmlMapper = new XmlMapper();
PlainPassword plainPassword = xmlMapper.readValue(xmlString, PlainPassword.class);
System.out.println(plainPassword.getPlainPassword());
}
@JacksonXmlRootElement(localName = "password")
public static class PlainPassword {
public String getPlainPassword() {
return this.plainPassword;
}
public void setPlainPassword(String plainPassword) {
this.plainPassword = plainPassword;
}
private String plainPassword;
}
}
它工作正常,但xmlString
我可以使用任何根标签名称,我的代码仍然可以工作。例如String xmlString = "<x><plainPassword>12345</plainPassword></x>";
,我x
用作根元素的地方也可以。但是是否可以说 xmlMapper 它只能正确反序列化具有“密码”根元素的字符串?
解决方案
您可以将根类的名称更改为所有内容,例如:@JacksonXmlRootElement(localName = "xyz")
并且它可以工作。
基于Java 文档 JacksonXmlRootElement用于定义在序列化时用于根级对象的根元素的名称(不用于反序列化映射),通常使用类型(类)的名称。
推荐阅读
- wordpress - 主题突然中断 wordpress
- javascript - 自动调整文本元素的大小不适用于 keyup
- java - Spring Security hasIpAddress 给 403 Forbidden
- java - 从绝对路径转换为相对路径
- rhapsody - Rhapsody 状态图中的并发:状态动作与转换
- python - 无服务器框架 - Lambda 在不通过 API 网关的情况下调用另一个 lambda
- python - ModuleNotFoundError:没有名为“pynput”的模块
- python-2.7 - 尝试使用 ftplib ftp 文件 > 2GB 时出现问题
- shopify - 以编程方式获取 shopify 分析令牌
- oracle - Oracle EM Express 背后的查询