日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
XML和JSON互相轉(zhuǎn)換原來這么簡單

[[347693]]

成都創(chuàng)新互聯(lián)長期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為仲巴企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作仲巴網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

 1. 前言

最近在折騰移動支付,什么移動支付、支付寶支付、銀聯(lián)支付、還有什么國外的 PayPal。有的支付系統(tǒng)還用著 XML 這種數(shù)據(jù)格式,和我們現(xiàn)在流行的 JSON 不太符合。最開始我使用了DOM4J這個老牌 XML 解析庫。寫完 DEMO 后有人告訴我 Jackson 更加簡單些,我嘗試了一下確實更加方便簡單,所以就來分享給大家。

2. 依賴

在Spring Boot或者Spring Cloud的 Web 項目中只需要引入:

 
 
 
 
  1.  
  2.     com.fasterxml.jackson.dataformat 
  3.     jackson-dataformat-xml 
  4.  

這個是 jackson 的的 XML 格式化模塊,已經(jīng)自動加入了依賴池。

3. XML 與 Java 對象互轉(zhuǎn)

XML 和 JSON 互相轉(zhuǎn)換的流程都是先轉(zhuǎn)換為 Java 對象,然后再轉(zhuǎn)換為目標(biāo)類型。

XmlMapper

XML 轉(zhuǎn)對象需要定義一個XmlMapper,這個對應(yīng)了轉(zhuǎn)換 JSON 的ObjectMapper,甚至XmlMapper是ObjectMapper的子類。我們來聲明一個XmlMapper,你可以new一個,如果你采用了默認(rèn)的配置的話。

 
 
 
 
  1. XmlMapper xmlMapper = new XmlMapper(); 

如果你需要定制推薦使用建造者的方式,比如下面:

 
 
 
 
  1. XmlMapper build = XmlMapper.builder() 
  2.                 //  忽略實體類沒有對應(yīng)屬性    如果為 true 會拋出異常 
  3.                .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false) 
  4.                // 忽略null 
  5.                .serializationInclusion(JsonInclude.Include.NON_NULL) 
  6.                // 屬性使用 駝峰首字母小寫 
  7.                .propertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE) 
  8.                .build(); 

演示

接下來我們來用一個 DEMO 進(jìn)行演示,先定義一個test.xml的 XML 文件,內(nèi)容為

 
 
 
 
  1.  
  2.  
  3.     felord.cn 
  4.     18 
  5.     ]]> 
  6.  

比轉(zhuǎn)義字符要香的多,可讀性更強。

對應(yīng)的實體類為:

 
 
 
 
  1. @Data 
  2. public class User { 
  3.  private String username; 
  4.  private Integer age; 
  5.  // private String created; 

然后利用上面構(gòu)造的builder來進(jìn)行轉(zhuǎn)換操作:

 
 
 
 
  1. ClassPathResource classPathResource = new ClassPathResource("./test.xml"); 
  2. User user = build.readValue(classPathResource.getFile(), User.class); 
  3. // Java  User(username=felord.cn, age=18, created=<2020-10-22>) 
  4. System.out.println("xml file to Java Object " + user); 
  5. String s = build.writeValueAsString(user); 
  6. // felord.cn18<2020-10-22> 
  7. System.out.println("Java Object to xml string " + s); 
  8. User u = build.readValue(s, User.class); 
  9. // Java User(username=felord.cn, age=18, created=<2020-10-22>) 
  10. System.out.println("xml string to Java Object" + u); 

既然能夠轉(zhuǎn)對象那么再轉(zhuǎn) JSON 也沒啥難度了。

當(dāng)然也支持注解的方式。

4. 總結(jié)

Jackson 類庫是 Spring Boot 默認(rèn)集成的 JSON 庫,甚至不單單是 JSON 庫,它還可以用來處理 XML。集成 XML 操作能力也非常簡單,使用起來也不是很復(fù)雜。在我看來最大的優(yōu)勢是不用引入其它的額外框架來處理,依賴種類最少的系統(tǒng)開發(fā)維護(hù)起來是最省心的。

本文轉(zhuǎn)載自微信公眾號「碼農(nóng)小胖哥」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系碼農(nóng)小胖哥公眾號。

 


網(wǎng)站標(biāo)題:XML和JSON互相轉(zhuǎn)換原來這么簡單
文章分享:http://www.5511xx.com/article/dhohsss.html