Java如何接收XML格式參數(shù)并轉(zhuǎn)換為JSON
在 Java 應(yīng)用程序中,處理 XML 數(shù)據(jù)并將其轉(zhuǎn)換為 JSON 格式是很常見的任務(wù)。以下是一個(gè)示例代碼,展示如何使用 Java 完成這一操作:
前期準(zhǔn)備
1.確保你的項(xiàng)目中包含以下依賴:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.0</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20210307</version> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.1</version> </dependency>
2.創(chuàng)建一個(gè) Java 類來表示 XML 數(shù)據(jù)結(jié)構(gòu):
import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.util.List; @XmlRootElement(name = "data") public class Data { private String name; private int age; private List<String> hobbies; // Getters and setters @XmlElement(name = "name") public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement(name = "age") public int getAge() { return age; } public void setAge(int age) { this.age = age; } @XmlElement(name = "hobbies") public List<String> getHobbies() { return hobbies; } public void setHobbies(List<String> hobbies) { this.hobbies = hobbies; } }
接收 XML 參數(shù)
1.使用 JAXB 解析 XML 數(shù)據(jù):
import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; import java.io.StringReader; public class XMLParser { public static Data parseXML(String xml) throws Exception { JAXBContext context = JAXBContext.newInstance(Data.class); Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader reader = new StringReader(xml); Data data = (Data) unmarshaller.unmarshal(reader); return data; } }
2.在你的控制器中接收 XML 參數(shù):
import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class DataController { @PostMapping("/receive-xml") public ResponseEntity<String> receiveXML(@RequestBody String xml) { try { Data data = XMLParser.parseXML(xml); String json = JSONConverter.convertToJSON(data); return new ResponseEntity<>(json, HttpStatus.OK); } catch (Exception e) { return new ResponseEntity<>("Error processing XML", HttpStatus.BAD_REQUEST); } } }
將 XML 轉(zhuǎn)換為 JSON
使用 Jackson 將 Java 對(duì)象轉(zhuǎn)換為 JSON 字符串:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import org.json.JSONObject; public class JSONConverter { public static String convertToJSON(Data data) throws Exception { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.enable(SerializationFeature.INDENT_OUTPUT); return objectMapper.writeValueAsString(data); } }
測(cè)試代碼
假設(shè)你使用的是 Spring Boot 項(xiàng)目,可以通過以下方式測(cè)試:
啟動(dòng)你的 Spring Boot 應(yīng)用程序。
使用工具如 Postman 或 curl 發(fā)送一個(gè) POST 請(qǐng)求到 /receive-xml,內(nèi)容類型為 application/xml,并附帶以下 XML 數(shù)據(jù):
<data> <name>John</name> <age>30</age> <hobbies> <hobby>Reading</hobby> <hobby>Traveling</hobby> <hobby>Cooking</hobby> </hobbies> </data>
你應(yīng)該會(huì)收到以下 JSON 響應(yīng):
{ "name" : "John", "age" : 30, "hobbies" : [ "Reading", "Traveling", "Cooking" ] }
總結(jié)
通過以上代碼,我們展示了如何在 Java 中接收 XML 格式的參數(shù),并將其轉(zhuǎn)換為 JSON 格式。這個(gè)過程包括以下步驟:
- 使用 JAXB 解析 XML 數(shù)據(jù)并綁定到 Java 對(duì)象。
- 使用 Jackson 將 Java 對(duì)象轉(zhuǎn)換為 JSON 字符串。
- 通過 REST API 接收 XML 請(qǐng)求并返回 JSON 響應(yīng)。
以上就是Java如何接收XML格式參數(shù)并轉(zhuǎn)換為JSON的詳細(xì)內(nèi)容,更多關(guān)于Java接收XML并轉(zhuǎn)為JSON的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java回調(diào)函數(shù)與觀察者模式實(shí)例代碼
這篇文章主要介紹了Java回調(diào)函數(shù)與觀察者模式實(shí)例代碼,簡單介紹了使用觀察者模式的場(chǎng)景,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02Springboot RestTemplate設(shè)置超時(shí)時(shí)間的方法(Spring boot
這篇文章主要介紹了Springboot RestTemplate設(shè)置超時(shí)時(shí)間的方法,包括Spring boot 版本<=1.3和Spring boot 版本>=1.4,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08Spring Boot實(shí)戰(zhàn)之?dāng)?shù)據(jù)庫操作的示例代碼
本篇文章主要介紹了Spring Boot實(shí)戰(zhàn)之?dāng)?shù)據(jù)庫操作的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01java發(fā)送kafka事務(wù)消息的實(shí)現(xiàn)方法
本文主要介紹了java發(fā)送kafka事務(wù)消息的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Mybatis-Spring連接mysql 8.0配置步驟出錯(cuò)的解決方法
這篇文章主要為大家詳細(xì)介紹了Mybatis-Spring連接mysql 8.0配置步驟出錯(cuò)的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06java使用WatchService監(jiān)控文件夾示例
本篇文章主要介紹了java使用WatchService監(jiān)控文件夾示例的資料,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-02-02