【问题标题】:Jackson XML to JSON conversion: How to exclude a specific tag in XML by retaining the inner values during the conversion?Jackson XML 到 JSON 的转换:如何通过在转换过程中保留内部值来排除 XML 中的特定标签?
【发布时间】:2021-03-06 19:17:55
【问题描述】:

我正在尝试使用 Java Jackson 库将 XML 数据转换为 JSON。截至目前,我能够将 XML 转换为 JSON,但我想通过保留其中的内部值来删除特定的 XML 标记。

假设我的 XML 是:

<?xml version="1.0"?>
<Company>
    <Employee>
        <extension>
            <FirstName>Tanmay</FirstName>
            <LastName>Patil</LastName>
            <ContactNo>1234567890</ContactNo>
        </extension>
    </Employee>
</Company>

根据要求,我希望我的 JSON 是:

{
  "Employee": {
    "FirstName": "Tanmay",
    "LastName": "Patil",
    "ContactNo": "1234567890"
  }
}

我不想在 JSON 中有 extension 标记。如何跳过此标签但保留其中的值?

以下是我使用 Jackson 将 XML 转换为 JSON 的代码:

public class ApplicationMain {

    public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException, URISyntaxException {
        String absolutePath = Paths.get(ApplicationMain.class.getClassLoader().getResource("inputData.xml").toURI()).toFile().getAbsolutePath();
        Path fileName = Path.of(absolutePath);
        String xmlInputData = Files.readString(fileName);
        // System.out.println(xmlInputData);

        XmlMapper xmlMapper = new XmlMapper();
        JsonNode node = xmlMapper.readTree(xmlInputData.getBytes());
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(node);
        System.out.println(json);
    }

}

【问题讨论】:

  • Underscore-java库有一个静态方法U.xmlToJson(xml)。

标签: java json xml jackson fasterxml


【解决方案1】:

Underscore-java库可以将xml转换为json。

    String xml = "<?xml version=\"1.0\"?>\n" +
            "<Company>\n" +
            "    <Employee>\n" +
            "        <extension>\n" +
            "            <FirstName>Tanmay</FirstName>\n" +
            "            <LastName>Patil</LastName>\n" +
            "            <ContactNo>1234567890</ContactNo>\n" +
            "        </extension>\n" +
            "    </Employee>\n" +
            "</Company>";
    Map<String, Object> objectMap = U.fromXmlMap(xml);
    U.set(objectMap, "Company.Employee", U.get(objectMap, "Company.Employee.extension"));
    System.out.println(U.toJson(U.<Map<String, Object>>get(objectMap, "Company")));

// {
//   "Employee": {
//     "FirstName": "Tanmay",
//     "LastName": "Patil",
//     "ContactNo": "1234567890"
//   }
// }

【讨论】:

  • 感谢您的回复。可以使用杰克逊图书馆吗?
  • 可以将xml转成map,修改后生成json。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多