Json和XML文件相互轉化

目錄

一.XML轉Json文件

示例:將XML轉換為JSON

依賴準備

Java代碼示例

代碼詳細講解

二.Json轉XML文件

示例:將JSON轉換為XML

依賴準備

Java代碼示例

代碼詳細講解

關鍵代碼解析

將JSON轉換為XML

寫入文件

示例輸入與輸出

三.具有相同功能的依賴?

Jackson

Jackson JSON與XML模塊依賴(Maven)

示例代碼

Gson和XStream

Gson與XStream依賴(Maven)

示例代碼

總結


一.XML轉Json文件

在Java中,將XML文件的數據解析為JSON文件的過程通常涉及以下步驟:

  1. 解析XML文件:使用XML解析庫將XML文件讀取并轉化為對象或數據結構。

  2. 轉換為JSON:使用JSON庫將Java對象或數據結構轉換為JSON格式并輸出。

示例:將XML轉換為JSON

以下是如何使用Java中的org.json庫來轉換XML文件數據為JSON格式的完整示例。

依賴準備

首先,在你的項目中添加必要的依賴庫。例如,使用 Maven 進行依賴管理:

<dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20210307</version>
</dependency>
Java代碼示例
import org.json.JSONObject;
import org.json.XML;import java.nio.file.Files;
import java.nio.file.Paths;public class XmlToJsonConverter {public static void main(String[] args) {try {// 讀取 XML 文件內容String xmlContent = new String(Files.readAllBytes(Paths.get("example.xml")));// 將 XML 內容轉換為 JSONJSONObject jsonObject = XML.toJSONObject(xmlContent);// 轉換后的 JSON 字符串String jsonContent = jsonObject.toString(4); // 4 為縮進空格數,格式化輸出// 輸出 JSON 字符串到文件Files.write(Paths.get("output.json"), jsonContent.getBytes());System.out.println("XML successfully converted to JSON.");} catch (Exception e) {e.printStackTrace();}}
}

代碼詳細講解

  1. 讀取XML文件內容

    String xmlContent = new String(Files.readAllBytes(Paths.get("example.xml")));
    

    使用NIO API讀取文件到字符串中。example.xml是XML文件的路徑。

  2. 使用org.json.XML進行轉換

    JSONObject jsonObject = XML.toJSONObject(xmlContent);
    

    XML.toJSONObject()方法將XML字符串轉換為JSON對象。

  3. JSON格式化輸出

    String jsonContent = jsonObject.toString(4); // 縮進為4個空格
    

    JSONObject轉換為格式化的JSON字符串。toString(4)可指定縮進大小。

  4. 寫入JSON文件

    Files.write(Paths.get("output.json"), jsonContent.getBytes());
    

    使用NIO API將格式化的JSON字符串寫入到output.json

  5. 異常處理:?try-catch塊用于處理可能出現的IOException和其他異常。

二.Json轉XML文件

將JSON數據轉換為XML文件涉及兩個主要步驟:解析JSON數據,然后生成XML格式的數據并寫入文件。我們可以使用org.json庫實現這些操作。

示例:將JSON轉換為XML

以下是如何使用Java將JSON數據轉換為XML文件的完整示例。

依賴準備

確保你的項目中已包含必要的依賴庫。例如,使用 Maven 進行依賴管理:

<dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20210307</version>
</dependency>
Java代碼示例
import org.json.JSONObject;
import org.json.XML;import java.nio.file.Files;
import java.nio.file.Paths;public class JsonToXmlConverter {public static void main(String[] args) {try {// 讀取 JSON 文件內容String jsonContent = new String(Files.readAllBytes(Paths.get("input.json")));// 將 JSON 內容轉換為 XMLJSONObject jsonObject = new JSONObject(jsonContent);String xmlContent = XML.toString(jsonObject);// 輸出 XML 字符串到文件Files.write(Paths.get("output.xml"), xmlContent.getBytes());System.out.println("JSON successfully converted to XML.");} catch (Exception e) {e.printStackTrace();}}
}

代碼詳細講解

  1. 讀取JSON文件內容

    String jsonContent = new String(Files.readAllBytes(Paths.get("input.json")));
    

    使用NIO API讀取文件到字符串中。input.json是JSON文件的路徑。

  2. 使用org.json進行轉換

    JSONObject jsonObject = new JSONObject(jsonContent);
    String xmlContent = XML.toString(jsonObject);
    
    • new JSONObject(jsonContent):將JSON字符串轉換為JSONObject對象。
    • XML.toString(jsonObject):將JSONObject轉換為XML字符串。
  3. 寫入XML文件

    Files.write(Paths.get("output.xml"), xmlContent.getBytes());
    

    使用NIO API將XML字符串寫入到output.xml

  4. 異常處理:?try-catch塊用于處理可能出現的IOException和其他異常。

關鍵代碼解析

將JSON轉換為XML

org.json.XML類提供了一種簡便的方法將JSON數據轉換為XML:

String xmlContent = XML.toString(jsonObject);
寫入文件

使用NIO API將轉換后的XML格式字符串輸出到指定文件:

Files.write(Paths.get("output.xml"), xmlContent.getBytes());
示例輸入與輸出

假設輸入的input.json文件內容如下:

{"person": {"name": "John Doe","age": 25,"address": {"street": "123 Main St","city": "Anytown"}}
}

轉換后的output.xml文件內容如下:

<person><name>John Doe</name><age>25</age><address><street>123 Main St</street><city>Anytown</city></address>
</person>

三.具有相同功能的依賴?

將JSON數據轉換為XML格式可以通過多種庫來實現。除了org.json庫以外,還有一些其他流行的Java庫也可以幫助完成這類轉換任務。以下是幾個常用的庫:

Jackson

Jackson庫是Java領域非常流行的數據處理庫之一。你可以使用Jackson來處理JSON數據,并通過結合XML模塊實現JSON到XML的轉換。

Jackson JSON與XML模塊依賴(Maven)
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.13.1</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.13.1</version>
</dependency>
示例代碼
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.nio.file.Files;
import java.nio.file.Paths;public class JacksonJsonToXmlConverter {public static void main(String[] args) {try {ObjectMapper jsonMapper = new ObjectMapper();XmlMapper xmlMapper = new XmlMapper();// 讀取 JSON 文件內容String jsonContent = new String(Files.readAllBytes(Paths.get("input.json")));// JSON 轉換為 ObjectObject jsonObject = jsonMapper.readValue(jsonContent, Object.class);// Object 轉換為 XMLString xmlContent = xmlMapper.writeValueAsString(jsonObject);// 輸出 XML 字符串到文件Files.write(Paths.get("output.xml"), xmlContent.getBytes());System.out.println("JSON successfully converted to XML using Jackson.");} catch (Exception e) {e.printStackTrace();}}
}

Gson和XStream

Gson是Google提供的輕量級Java庫,適用于處理JSON數據。結合XStream庫,你可以將JSON轉換為對象再轉為XML。

Gson與XStream依賴(Maven)
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.8</version>
</dependency>
<dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.18</version>
</dependency>
示例代碼
import com.google.gson.Gson;
import com.thoughtworks.xstream.XStream;
import java.nio.file.Files;
import java.nio.file.Paths;public class GsonToXStreamConverter {public static void main(String[] args) {try {Gson gson = new Gson();XStream xStream = new XStream();// 讀取 JSON 文件內容String jsonContent = new String(Files.readAllBytes(Paths.get("input.json")));// JSON 轉換為 ObjectObject jsonObject = gson.fromJson(jsonContent, Object.class);// Object 轉換為 XMLString xmlContent = xStream.toXML(jsonObject);// 輸出 XML 字符串到文件Files.write(Paths.get("output.xml"), xmlContent.getBytes());System.out.println("JSON successfully converted to XML using Gson and XStream.");} catch (Exception e) {e.printStackTrace();}}
}

總結

多種Java庫提供了不同的功能和特點,可以用于JSON到XML的轉換:

  • Jackson:功能全面,支持多種數據格式,處理大規模數據很有效。
  • Gson + XStream:輕便而靈活的工具,適用于更輕量級的轉換場景。

根據需求選擇合適的庫,結合項目環境進行集成,都可以方便地完成JSON到XML的格式轉換。理解這些工具的使用和配置,可以提高開發效率,簡化數據處理步驟。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92935.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92935.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92935.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python科學計算與可視化領域工具TVTK、Mayavi、Mlab、Traits(附視頻教程)

概述 TVTK、Mayavi、Mlab 和 Traits 都是 Python 科學計算與可視化領域中緊密相關的工具&#xff0c;它們常被結合使用來處理和展示三維數據。視頻教程&#xff1a;https://pan.quark.cn/s/f73e875225ca 1. TVTK TVTK&#xff08;Traits-based Visualization Toolkit&#xff0…

SQL INSERT INTO SELECT 詳解

SQL INSERT INTO SELECT 詳解 引言 SQL(Structured Query Language)是數據庫操作的基礎語言,廣泛用于各種關系型數據庫管理系統中。在SQL中,INSERT INTO SELECT 是一個強大的功能,它允許用戶從一個表中選取數據,并直接將這些數據插入到另一個表中。本文將詳細講解 SQL …

python速成學習路線

第一部分&#xff1a;核心基礎&#xff08;語法與工具&#xff09; 目標&#xff1a;掌握 Python 的基本語法規則、數據處理方式和開發工具 核心內容&#xff1a; 環境搭建 安裝Python 3.x版本&#xff08;推薦3.10&#xff09;配置開發工具&#xff08;如PyCharm、VS Code或…

自然語言處理的實際應用

在這個信息爆炸的時代&#xff0c;我們每天都在與文字、語音打交道 —— 發送消息、查詢信息、使用智能助手…… 這些看似平常的互動背后&#xff0c;都離不開一項關鍵技術的支撐&#xff1a;自然語言處理&#xff08;NLP&#xff09;。作為人工智能的重要分支&#xff0c;NLP …

Docker實戰:為項目打造即開即用的寶塔LNMP環境

Docker實戰&#xff1a;為項目打造即開即用的寶塔LNMP環境背景一、準備基礎鏡像二、啟動配置容器&#xff08;關鍵步驟&#xff09;三、容器內環境配置&#xff08;逐步執行&#xff09;1. 基礎環境搭建2. 安裝Systemd&#xff08;寶塔依賴&#xff09;3. 安裝寶塔面板&#xf…

.net\c#web、小程序、安卓開發之基于asp.net家用汽車銷售管理系統的設計與實現

.net\c#web、小程序、安卓開發之基于asp.net家用汽車銷售管理系統的設計與實現

藥房智能盤庫系統:基于CV與時間序列預測的庫存革命

> 在醫療資源日益緊張的今天,**全國78%的藥房仍依賴人工盤庫**,平均每100家藥房每年因庫存問題損失超50萬元。當計算機視覺遇見時間序列預測,一場藥房庫存管理的智能化革命正在悄然發生。 --- ### 一、傳統藥房庫存的三大痛點與破局思路 #### 致命痛點分析 1. **人工…

【互動屏幕】解析雙屏聯動在數字展廳中的應用與價值

雙屏聯動 https://www.bmcyzs.com/ 作為現代展廳設計中的重要技術手段&#xff0c;通過兩塊或多塊屏幕的協同工作&#xff0c;實現了信息的動態展示與交互體驗的提升。在展廳環境中&#xff0c;雙屏聯動軟件能夠將觸摸屏與大屏幕無縫連接&#xff0c;使觀眾通過簡單的操作即可控…

clickhouse基礎概念及集群部署

一. 簡述&#xff1a; ClickHouse 是一款高性能列式存儲數據庫&#xff0c;專為海量數據的實時分析場景設計。它以極致的查詢速度、高效的存儲利用率和強大的并行處理能力著稱&#xff0c;廣泛應用于日志分析、用戶行為分析、業務監控等大數據分析領域。1. 核心特性&#xff1a…

低版本 IntelliJ IDEA 使用高版本 JDK 語言特性的問題

現實問題&#xff1a; 目前最新的 IntelliJ IDEA 已經不支持在 Win7 環境上安裝了&#xff0c;如果企業內開發環境仍然是 Win7&#xff0c;就會導致很多問題。 比如當前 IDEA 版本為 2023.1&#xff0c;最大支持 JDK17&#xff0c;如何正常使用 JDK21 的新特性呢&#xff1f;比…

3分鐘 Spring AI 實現對話功能

1.什么是spring AISpring AI 是 Spring 官方推出的一個基于 Spring 生態的 AI 應用開發框架&#xff0c;旨在簡化將人工智能&#xff08;如大語言模型、生成式 AI&#xff09;集成到 Java 應用中的過程。它提供了統一的 API 和工具&#xff0c;讓開發者能更輕松地調用 AI 模型2…

CMake筆記:配置(Configure)、生成(Generate)和構建(Build)

以下為AI生成的內容&#xff1a; 一、配置階段&#xff08;Configure&#xff09; 本質&#xff1a;解析項目邏輯&#xff0c;構建內存模型 觸發命令&#xff1a;cmake -S <源碼路徑> -B <構建路徑> 關鍵操作與輸出&#xff1a;操作類型典型案例輸出產物變量定義se…

直接編輯pdf文件教程

工具下載地址&#xff1a;https://pan.quark.cn/s/4befbe5f4a77 一、下載并安裝軟件二、打開軟件&#xff0c;并打開一個pdf文件三、編輯PDF文件&#xff0c;并保存四、關閉軟件&#xff0c;打開源文件查看效果。

javaswing json格式化工具

效果展示代碼 package com.example.springbootdemo;import javax.swing.*; import javax.swing.border.TitledBorder; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeSelectionModel; import java.…

真實案例 | 如何用iFlyCode開發Webpack插件?

01案例背景在項目中&#xff0c;我們經常需要存檔前端每次打包的版本&#xff0c;方便線上快速切換不同版本使用。經過思考&#xff0c;我們可以在打包時&#xff0c;將本次打包結果另存為zip壓縮包&#xff0c;方便后續使用。于是我準備開發一個Webpack插件實現此功能&#xf…

19day-人工智能-機器學習-分類算法-決策樹

1. 什么是決策樹學過數據結構與算法的小伙伴應該對樹不陌生吧&#xff0c;這里的決策樹也是大同小異的&#xff0c;只是每次反之都有一個條件來決定流向的。1.1 決策節點通過條件判斷而進行分支選擇的節點。如&#xff1a;將某個樣本中的屬性值(特征值)與決策節點上的值進行比較…

地球磁層全球MHD模型中模擬Dst指數的半經驗方法

A semi-empirical approach to simulating the Dst index in global MHD models of Earth’s magnetosphere pdf 1 Introduction Dst指數 (Disturbance storm time index, 地磁暴時擾動指數) 是描述磁暴活動強度應用最廣泛的指數&#xff0c;對于研究地磁擾動和磁暴具有重要意…

什么是臟讀、幻讀、不可重復讀?

臟讀、幻讀和不可重復讀是數據庫事務隔離級別中常見的三種數據一致性問題。它們描述了在并發事務環境下可能出現的異常現象。下面通過對比表格和具體示例進行清晰解析&#xff1a;核心概念對比表問題類型觸發場景本質原因示例臟讀 (Dirty Read)事務A讀取了事務B未提交的修改讀取…

騰訊位置商業授權微信小程序關鍵詞輸入提示

微信小程序JavaScript SDK 開發指南 關鍵詞輸入提示 getSuggestion(options:Object) 用于獲取輸入關鍵字的補完與提示&#xff0c;幫助用戶快速輸入 注&#xff1a;坐標系采用gcj02坐標系 options屬性說明 屬性類型必填說明keywordString是用戶輸入的關鍵詞&#xff08;希望…

LabVIEW菜單操控

該程序圍繞運行時菜單欄操作&#xff0c;實現從初始化構建菜單結構&#xff08;含菜單項、快捷鍵 &#xff09;&#xff0c;到響應交互刪除特定菜單項&#xff0c;再到監控界面事件驅動邏輯&#xff0c;完成自定義菜單交互全流程&#xff0c;適配需靈活菜單控制的程序開發場景。…