【发布时间】:2019-01-07 11:15:54
【问题描述】:
我正在尝试将 XML 字符串转换为 Map,下面的代码转换得很好,但我需要映射键应该统一的方式(小写或大写)。
public static void main(String[] args) throws Exception {
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CASE);
String xml = "<Find Status=\"Success\"><Result><Provider><lastUpdated>1545391251168</lastUpdated></Provider></Result></Find>";
System.out.println(xmlMapper.readValue(xml.getBytes(), Map.class));
}
实际输出为:
{状态=成功,结果={提供者={lastUpdated=1545391251168}}}
预期输出为:
{status=成功,结果={provider={lastupdated=1545391251168}}}
依赖关系:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.8</version>
</dependency>
【问题讨论】:
-
NamingStrategy 如果您映射到具有命名成员的 pojo,则应该可以工作。看起来有一些使用容器的特殊处理。对于您的用例,尝试实现一个自定义 NamingStrategy(扩展 PropertyNamingStrategy),它强制使用小写名称
-
不..我只需要地图,我不会去 pojo..
-
我的反应是动态的。
标签: java jackson fasterxml jackson-dataformat-xml