最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)JSON與XML相互轉(zhuǎn)換的簡(jiǎn)明教程

 更新時(shí)間:2024年08月26日 11:51:04   作者:promise524  
Java實(shí)現(xiàn)復(fù)雜數(shù)據(jù)結(jié)構(gòu)(如嵌套對(duì)象、數(shù)組)在 JSON 與 XML 之間的相互轉(zhuǎn)換,可以使用 Jackson 和 Jackson XML 擴(kuò)展庫(kù)來(lái)完成,Jackson 是一個(gè)流行的 JSON 處理庫(kù),通過(guò) Jackson 的 XML 擴(kuò)展庫(kù),可以實(shí)現(xiàn) JSON 和 XML 之間的轉(zhuǎn)換,需要的朋友可以參考下

前言

Java實(shí)現(xiàn)復(fù)雜數(shù)據(jù)結(jié)構(gòu)(如嵌套對(duì)象、數(shù)組)在 JSON 與 XML 之間的相互轉(zhuǎn)換,可以使用 JacksonJackson XML 擴(kuò)展庫(kù)來(lái)完成。Jackson 是一個(gè)流行的 JSON 處理庫(kù),支持將 Java 對(duì)象序列化為 JSON 字符串,并反序列化為 Java 對(duì)象。通過(guò) Jackson 的 XML 擴(kuò)展庫(kù),可以實(shí)現(xiàn) JSON 和 XML 之間的轉(zhuǎn)換。

引入依賴

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

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

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

實(shí)現(xiàn) XML 和 JSON 互轉(zhuǎn)

定義數(shù)據(jù)結(jié)構(gòu)

  • 定義一個(gè)數(shù)據(jù)結(jié)構(gòu),包括嵌套對(duì)象和數(shù)組。例如,一個(gè) Company 對(duì)象,其中包含多個(gè) Department 對(duì)象,每個(gè) Department 對(duì)象又包含多個(gè) Employee 對(duì)象
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;

import java.util.List;

// 員工類
public class Employee {
    private String name;
    private int age;
    private String role;

    public Employee() { }

    public Employee(String name, int age, String role) {
        this.name = name;
        this.age = age;
        this.role = role;
    }

    // Getters and Setters
    @JacksonXmlProperty(localName = "Name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @JacksonXmlProperty(localName = "Age")
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @JacksonXmlProperty(localName = "Role")
    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }
}

// 部門(mén)類
public class Department {
    private String name;
    private List<Employee> employees;

    public Department() { }

    public Department(String name, List<Employee> employees) {
        this.name = name;
        this.employees = employees;
    }

    // Getters and Setters
    @JacksonXmlProperty(localName = "Name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @JacksonXmlElementWrapper(localName = "Employees")
    @JacksonXmlProperty(localName = "Employee")
    public List<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(List<Employee> employees) {
        this.employees = employees;
    }
}

// 公司類
public class Company {
    private String name;
    private List<Department> departments;

    public Company() { }

    public Company(String name, List<Department> departments) {
        this.name = name;
        this.departments = departments;
    }

    // Getters and Setters
    @JacksonXmlProperty(localName = "Name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @JacksonXmlElementWrapper(localName = "Departments")
    @JacksonXmlProperty(localName = "Department")
    public List<Department> getDepartments() {
        return departments;
    }

    public void setDepartments(List<Department> departments) {
        this.departments = departments;
    }
}

JSON 與 XML 互轉(zhuǎn)實(shí)現(xiàn)

  • 使用 Jackson 提供的 ObjectMapper 和 XmlMapper 來(lái)進(jìn)行 JSON 和 XML 的轉(zhuǎn)換。

JSON 轉(zhuǎn) XML

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

import java.io.IOException;
import java.util.Arrays;

public class JsonToXmlConverter {

    public static void main(String[] args) throws IOException {
        // 創(chuàng)建一個(gè)包含嵌套對(duì)象和數(shù)組的復(fù)雜結(jié)構(gòu)的示例
        Employee emp1 = new Employee("Alice", 30, "Developer");
        Employee emp2 = new Employee("Bob", 28, "Designer");
        Department dept1 = new Department("IT", Arrays.asList(emp1, emp2));

        Employee emp3 = new Employee("Charlie", 32, "Manager");
        Department dept2 = new Department("HR", Arrays.asList(emp3));

        Company company = new Company("Tech Corp", Arrays.asList(dept1, dept2));

        // 將 Java 對(duì)象轉(zhuǎn)換為 JSON 字符串
        ObjectMapper jsonMapper = new ObjectMapper();
        String jsonString = jsonMapper.writerWithDefaultPrettyPrinter().writeValueAsString(company);
        System.out.println("JSON Representation:");
        System.out.println(jsonString);

        // 將 JSON 字符串轉(zhuǎn)換為 XML 字符串
        XmlMapper xmlMapper = new XmlMapper();
        String xmlString = xmlMapper.writerWithDefaultPrettyPrinter().writeValueAsString(company);
        System.out.println("XML Representation:");
        System.out.println(xmlString);
    }
}

JSON 轉(zhuǎn) XML輸出

<Company>
  <Name>Tech Corp</Name>
  <Departments>
    <Department>
      <Name>IT</Name>
      <Employees>
        <Employee>
          <Name>Alice</Name>
          <Age>30</Age>
          <Role>Developer</Role>
        </Employee>
        <Employee>
          <Name>Bob</Name>
          <Age>28</Age>
          <Role>Designer</Role>
        </Employee>
      </Employees>
    </Department>
    <Department>
      <Name>HR</Name>
      <Employees>
        <Employee>
          <Name>Charlie</Name>
          <Age>32</Age>
          <Role>Manager</Role>
        </Employee>
      </Employees>
    </Department>
  </Departments>
</Company>

XML 轉(zhuǎn) JSON

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

import java.io.IOException;

public class XmlToJsonConverter {

    public static void main(String[] args) throws IOException {
        // 假設(shè)已有 XML 字符串
        String xmlString = "<Company>\n" +
                "  <Name>Tech Corp</Name>\n" +
                "  <Departments>\n" +
                "    <Department>\n" +
                "      <Name>IT</Name>\n" +
                "      <Employees>\n" +
                "        <Employee>\n" +
                "          <Name>Alice</Name>\n" +
                "          <Age>30</Age>\n" +
                "          <Role>Developer</Role>\n" +
                "        </Employee>\n" +
                "        <Employee>\n" +
                "          <Name>Bob</Name>\n" +
                "          <Age>28</Age>\n" +
                "          <Role>Designer</Role>\n" +
                "        </Employee>\n" +
                "      </Employees>\n" +
                "    </Department>\n" +
                "    <Department>\n" +
                "      <Name>HR</Name>\n" +
                "      <Employees>\n" +
                "        <Employee>\n" +
                "          <Name>Charlie</Name>\n" +
                "          <Age>32</Age>\n" +
                "          <Role>Manager</Role>\n" +
                "        </Employee>\n" +
                "      </Employees>\n" +
                "    </Department>\n" +
                "  </Departments>\n" +
                "</Company>";

        // 將 XML 字符串轉(zhuǎn)換為 Java 對(duì)象
        XmlMapper xmlMapper = new XmlMapper();
        Company company = xmlMapper.readValue(xmlString, Company.class);

        // 將 Java 對(duì)象轉(zhuǎn)換為 JSON 字符串
        ObjectMapper jsonMapper = new ObjectMapper();
        String jsonString = jsonMapper.writerWithDefaultPrettyPrinter().writeValueAsString(company);
        System.out.println("JSON Representation:");
        System.out.println(jsonString);
    }
}

XML 轉(zhuǎn) JSON 輸出

{
  "name" : "Tech Corp",
  "departments" : [ {
    "name" : "IT",
    "employees" : [ {
      "name" : "Alice",
      "age" : 30,
      "role" : "Developer"
    }, {
      "name" : "Bob",
      "age" : 28,
      "role" : "Designer"
    } ]
  }, {
    "name" : "HR",
    "employees" : [ {
      "name" : "Charlie",
      "age" : 32,
      "role" : "Manager"
    } ]
  } ]
}
  • Employee, Department, Company: 這些類構(gòu)成了復(fù)雜的數(shù)據(jù)結(jié)構(gòu),其中包含嵌套對(duì)象和數(shù)組。通過(guò)注解 @JacksonXmlProperty 和 @JacksonXmlElementWrapper,我們可以控制 XML 中元素的表示方式。

  • JsonToXmlConverter: 該類展示了如何將復(fù)雜的 Java 對(duì)象序列化為 JSON 字符串,并使用 Jackson 的 XmlMapper 將其轉(zhuǎn)換為 XML 字符串。

  • XmlToJsonConverter: 該類展示了如何從 XML 字符串反序列化為 Java 對(duì)象,并轉(zhuǎn)換為 JSON 字符串。

以上就是Java實(shí)現(xiàn)JSON與XML相互轉(zhuǎn)換的簡(jiǎn)明教程的詳細(xì)內(nèi)容,更多關(guān)于Java JSON與XML互轉(zhuǎn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • HttpServletRequestWrapper干預(yù)Request處理流程解析

    HttpServletRequestWrapper干預(yù)Request處理流程解析

    這篇文章主要分析在?Tomcat的處理?http?請(qǐng)求的流程中干預(yù)?Request對(duì)象,?通過(guò)基于HttpServletRequestWrapper和?Filter組合進(jìn)行干預(yù),有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-09-09
  • SpringBoot消息積壓排查方法、監(jiān)控方案與擴(kuò)容策略

    SpringBoot消息積壓排查方法、監(jiān)控方案與擴(kuò)容策略

    在分布式系統(tǒng)架構(gòu)中,消息隊(duì)列已成為解耦系統(tǒng)組件、提升系統(tǒng)吞吐量的重要基礎(chǔ)設(shè)施,然而,當(dāng)消息消費(fèi)速度跟不上生產(chǎn)速度時(shí),就會(huì)出現(xiàn)消息積壓?jiǎn)栴},本文將深入探討SpringBoot項(xiàng)目中消息積壓的排查方法、監(jiān)控方案以及擴(kuò)容策略,需要的朋友可以參考下
    2026-04-04
  • JMeter 實(shí)現(xiàn)Java請(qǐng)求步驟及原理詳解

    JMeter 實(shí)現(xiàn)Java請(qǐng)求步驟及原理詳解

    這篇文章主要介紹了JMeter 實(shí)現(xiàn)Java請(qǐng)求步驟及原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java詳細(xì)分析String類與StringBuffer和StringBuilder的使用方法

    Java詳細(xì)分析String類與StringBuffer和StringBuilder的使用方法

    當(dāng)對(duì)字符串進(jìn)行修改的時(shí)候,需要使用 StringBuffer 和 StringBuilder類,和String類不同的是,StringBuffer和 StringBuilder類的對(duì)象能夠被多次的修改,并且不產(chǎn)生新的未使用對(duì)象
    2022-04-04
  • synchronized及JUC顯式locks?使用原理解析

    synchronized及JUC顯式locks?使用原理解析

    這篇文章主要為大家介紹了synchronized及JUC顯式locks?使用原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 詳解RabbitMQ中死信隊(duì)列和延遲隊(duì)列的使用詳解

    詳解RabbitMQ中死信隊(duì)列和延遲隊(duì)列的使用詳解

    這篇文章主要為大家介紹了RabbitMQ中死信隊(duì)列和延遲隊(duì)列的原理與使用,這也是Java后端面試中常見(jiàn)的問(wèn)題,感興趣的小伙伴可以了解一下
    2022-05-05
  • SpringBoot集成OAuth2實(shí)現(xiàn)安全認(rèn)證與授權(quán)的實(shí)踐

    SpringBoot集成OAuth2實(shí)現(xiàn)安全認(rèn)證與授權(quán)的實(shí)踐

    本文主要介紹了SpringBoot集成OAuth2實(shí)現(xiàn)安全認(rèn)證與授權(quán)的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • SpringBoot整合Tomcat連接池的使用

    SpringBoot整合Tomcat連接池的使用

    這篇文章主要介紹了SpringBoot整合Tomcat連接池的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java多線程中的wait與notify方法詳解

    Java多線程中的wait與notify方法詳解

    這篇文章主要介紹了Java多線程中的wait與notify方法詳解,線程的調(diào)度是無(wú)序的,但有些情況要求線程的執(zhí)行是有序的,因此,我們可以使用 wait() 方法來(lái)使線程執(zhí)行有序,需要的朋友可以參考下
    2023-08-08
  • 三分鐘讀懂mybatis中resultMap和resultType區(qū)別

    三分鐘讀懂mybatis中resultMap和resultType區(qū)別

    這篇文章主要給大家介紹了mybatis中resultMap和resultType區(qū)別的相關(guān)資料,resultType和resultMap都是mybatis進(jìn)行數(shù)據(jù)庫(kù)連接操作處理返回結(jié)果的,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

三原县| 米易县| 绵竹市| 冷水江市| 吉首市| 潼关县| 南昌市| 伊春市| 砀山县| 商城县| 绩溪县| 高淳县| 杭锦旗| 云林县| 琼海市| 桦南县| 乌鲁木齐市| 河津市| 左贡县| 大余县| 军事| 来凤县| 长海县| 商洛市| 长沙市| 高州市| 凤城市| 栾川县| 孟连| 清流县| 达州市| 山东| 株洲县| 永平县| 周宁县| 醴陵市| 海丰县| 贡觉县| 元朗区| 秦安县| 渭南市|