Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java xml转json


在 Java 中将 XML 转换为 JSON 有几种常见的方式,我将为您介绍其中三种方式,并提供每种方式的详细步骤流程以及相应的代码示例。

使用 Jackson 库

步骤流程:

  1. 添加 Jackson 的依赖。
  2. 使用 Jackson 提供的 API 将 XML 解析为 JsonNode 对象,然后将 JsonNode 转换为 JSON 字符串。

Maven 依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.12.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.5</version>
</dependency>

Gradle 依赖:

implementation 'com.fasterxml.jackson.core:jackson-core:2.12.5'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.5'

示例代码:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;

public class XmlToJsonUsingJackson {
    public static void main(String[] args) throws Exception {
        String xml = "<root><name>John</name><age>30</age></root>";

        ObjectMapper xmlMapper = new XmlMapper();
        JsonNode jsonNode = xmlMapper.readTree(xml);

        ObjectMapper jsonMapper = new ObjectMapper();
        String json = jsonMapper.writeValueAsString(jsonNode);

        System.out.println(json);
    }
}

使用 org.json 库

步骤流程:

  1. 添加 org.json 的依赖。
  2. 使用 org.json 提供的 API 将 XML 解析为 JSONObject。

Maven 依赖:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20210307</version>
</dependency>

Gradle 依赖:

implementation 'org.json:json:20210307'

示例代码:

import org.json.JSONObject;
import org.json.XML;

public class XmlToJsonUsingOrgJson {
    public static void main(String[] args) {
        String xml = "<root><name>John</name><age>30</age></root>";

        JSONObject jsonObject = XML.toJSONObject(xml);
        String json = jsonObject.toString(4); // 4 is the indentation level

        System.out.println(json);
    }
}

使用 Java 自带的库(DOM 解析)

步骤流程:

  1. 使用 Java 的 DOM 解析库解析 XML 文件,遍历 XML 树结构并构建相应的 JSON 对象。
  2. 将 JSON 对象转换为字符串。

示例代码:

import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.StringReader;
import org.json.JSONObject;

public class XmlToJsonUsingDOM {
    public static void main(String[] args) throws Exception {
        String xml = "<root><name>John</name><age>30</age></root>";

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(new InputSource(new StringReader(xml)));

        JSONObject json = convertXmlToJson(document.getDocumentElement());
        String jsonString = json.toString(4); // 4 is the indentation level

        System.out.println(jsonString);
    }

    private static JSONObject convertXmlToJson(Node node) {
        JSONObject json = new JSONObject();

        if (node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            NamedNodeMap attributes = element.getAttributes();

            if (attributes.getLength() > 0) {
                JSONObject attributeJson = new JSONObject();
                for (int i = 0; i < attributes.getLength(); i++) {
                    Attr attribute = (Attr) attributes.item(i);
                    attributeJson.put(attribute.getName(), attribute.getValue());
                }
                json.put("attributes", attributeJson);
            }
        }

        NodeList children = node.getChildNodes();
        for (int i = 0; i < children.getLength(); i++) {
            Node child = children.item(i);
            if (child.getNodeType() == Node.ELEMENT_NODE) {
                if (child.getChildNodes().getLength() == 1 && child.getFirstChild().getNodeType() == Node.TEXT_NODE) {
                    json.put(child.getNodeName(), child.getTextContent());
                } else {
                    if (!json.has(child.getNodeName())) {
                        json.put(child.getNodeName(), new JSONArray());
                    }
                    ((JSONArray) json.get(child.getNodeName())).put(convertXmlToJson(child));
                }
            }
        }
        return json;
    }
}

请注意,这些示例代码中的 XML 和 JSON 结构仅为演示目的,实际使用时需要根据您的需求进行适当的调整。每种方式都有其优缺点,根据具体情况选择合适的方法。

在Java中将XML转换为Map的过程涉及到解析XML文档并将其转换为数据结构。以下是两种常见的方式来实现这个目标,包括每种方式的步骤流程和 ...
在Java中将XML转换为PDF通常需要使用一些库来生成PDF文件,同时根据XML内容来生成相应的样式和排版。##使用ApacheFOP(F ...
以下是几种常见的实现方式,以及每种方式的详细步骤流程、示例代码以及Maven和Gradle依赖坐标。假设有以下JSON数据表示一个简单的用户 ...
在Java中,将JSON转换为List对象有多种方式,其中常用的方式是使用第三方库,如Jackson、Gson等。###使用Jackson库 ...
注意:在示例代码中,我将使用一个简单的Java类`Person`来作为要转换为JSON的对象。*步骤流程:添加依赖(Maven):在代码中使 ...