当前位置: 首页 > news >正文

xml 和json互转工具

 工具1

有个问题会导致springboot返回捕获的异常编程xml格式

 

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.json.JSONObject;
import org.json.XML;
import org.w3c.dom.Document;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.io.InputStream;

public class XmlJsonConverter {

    private static final ObjectMapper objectMapper = new ObjectMapper(); // JSON处理
    private static final XmlMapper xmlMapper = new XmlMapper(); // XML处理

    // JSON转XML
    public static String jsonToXml(String json) throws Exception {
        // 将JSON转换为Map
        Object jsonObj = objectMapper.readValue(json, Object.class);
        // 将Map转换为XML
        return xmlMapper.writeValueAsString(jsonObj);
    }

    // XML转JSON
    public static String xmlToJson(String xml) throws Exception {
        // 将XML转换为Map
        Object xmlObj = xmlMapper.readValue(xml, Object.class);
        // 将Map转换为JSON
        return objectMapper.writeValueAsString(xmlObj);
    }

    // 将XML字符串转换为XML文档对象
    private static Document toXmlDocument(String xml) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        InputStream inputStream = new ByteArrayInputStream(xml.getBytes("UTF-8"));
        return builder.parse(inputStream);
    }

    // 将XML文档对象转换为JSON字符串
    public static String xmlDocumentToJson(Document doc) throws Exception {
        // XML文档转换为Map对象
        Object xmlObj = xmlMapper.readValue(xmlMapper.writeValueAsString(doc), Object.class);
        // Map转换为JSON
        return objectMapper.writeValueAsString(xmlObj);
    }

   
    // 测试代码
    public static void main (String[] args) {
        try {
            // JSON 转 XML
            String json = "{\"name\":\"John\", \"age\":30}";
            String xml = jsonToXml(json);
            System.out.println("JSON to XML: \n" + xml);

            // XML 转 JSON
            String xmlStr = "<person><name>John</name><age>30</age></person>";
            String jsonResult = xmlToJson(xmlStr);
            System.out.println("XML to JSON: \n" + jsonResult);
 
}

 <!-- Jackson XML dependency -->
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.15.0</version>
        </dependency>

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

        <!-- Jackson Core dependency -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.15.0</version>
        </dependency>

        <!-- Jackson Databind dependency -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.15.0</version>
        </dependency>

工具2

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





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

public class XmlJsonConverter {

    public static String jsonToXml(String json) {
        JSONObject jsonObject = new JSONObject(json);
        return XML.toString(jsonObject);
    }

    public static String xmlToJson(String xml) {
        JSONObject jsonObject = XML.toJSONObject(xml);
        return jsonObject.toString();
    }
}

相关文章:

  • 【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库
  • Java中如何高效地合并多个对象的List数据:方法与案例解析!
  • RealClip正式发布:重新定义轻量化数字内容交互体验
  • 处理数据及其选择关键列进行一次聚类
  • 第5章 数据库系统(选择|案例|论文)(重点★★★★★)
  • Unity中实现动态图集算法
  • 「软件设计模式」工厂方法模式 vs 抽象工厂模式
  • Linux 内核架构入门:从基础概念到面试指南*
  • 《Stable Diffusion绘画完全指南:从入门到精通的Prompt设计艺术》 第三章
  • 【前端框架与库】「深入理解 Vue 插槽」:类型、用法与实际场景解析,增强组件复用性的利器
  • 【力扣题解】【76. 最小覆盖子串】容易理解版
  • 进程等待与进程替换
  • LeetCode每日精进:876.链表的中间结点
  • 本地部署DeepSeek-R1模型(新手保姆教程)
  • Elasticsearch:15 年来致力于索引一切,找到重要内容
  • kubernetes源码分析 kubelet
  • k8s启空容器用于排查问题
  • OpenCV机器学习(1)人工神经网络 - 多层感知器类cv::ml::ANN_MLP
  • 伯克利 CS61A 课堂笔记 08 —— Strings and Dictionaries
  • RunLoop 详解
  • 新能源汽车,告别混乱创新
  • 海运港口股掀涨停潮!回应关税下调利好,有货代称美线舱位爆了
  • 佩斯科夫:若普京认为必要,将公布土耳其谈判俄方代表人选
  • 北京航空航天大学首个海外创新研究院落户巴西
  • 外国游客“在华扫货”热:“带空箱子到中国!”
  • 从600名外到跻身大满贯,孙发京:走过的路成就了现在的我