成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

XML和JSON互相轉(zhuǎn)換原來這么簡(jiǎn)單

移動(dòng)開發(fā) Android
最近在折騰移動(dòng)支付,什么移動(dòng)支付、支付寶支付、銀聯(lián)支付、還有什么國(guó)外的 PayPal。有的支付系統(tǒng)還用著 XML 這種數(shù)據(jù)格式,和我們現(xiàn)在流行的 JSON 不太符合

[[347693]]

 1. 前言

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

2. 依賴

在Spring Boot或者Spring Cloud的 Web 項(xiàng)目中只需要引入:

  1. <dependency> 
  2.     <groupId>com.fasterxml.jackson.dataformat</groupId> 
  3.     <artifactId>jackson-dataformat-xml</artifactId> 
  4. </dependency> 

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

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

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

XmlMapper

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

  1. XmlMapper xmlMapper = new XmlMapper(); 

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

  1. XmlMapper build = XmlMapper.builder() 
  2.                 //  忽略實(shí)體類沒有對(duì)應(yīng)屬性    如果為 true 會(huì)拋出異常 
  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(); 

演示

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

  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <User
  3.     <username>felord.cn</username> 
  4.     <age>18</age> 
  5.     <created><![CDATA[<2020-10-22>]]></created> 
  6. </User

<![CDATA[]]>比轉(zhuǎn)義字符要香的多,可讀性更強(qiáng)。

對(duì)應(yīng)的實(shí)體類為:

  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. // <User><username>felord.cn</username><age>18</age><created>&lt;2020-10-22></created></User
  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)對(duì)象那么再轉(zhuǎn) JSON 也沒啥難度了。

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

4. 總結(jié)

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

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

 

責(zé)任編輯:武曉燕 來源: 碼農(nóng)小胖哥
相關(guān)推薦

2021-04-19 05:42:51

Mmap文件系統(tǒng)

2023-11-01 14:49:07

2009-09-14 19:11:20

XML和Java Be

2014-10-08 15:00:50

SUSE操作系統(tǒng)云計(jì)算

2019-03-15 10:55:12

通信系統(tǒng)手機(jī)

2023-09-22 08:00:00

分布式鎖Redis

2020-09-24 06:44:54

HTTPS網(wǎng)站 HTTP

2020-11-27 10:34:01

HTTPHTTPS模型

2009-08-13 09:33:07

JavaBean到XM

2014-11-25 15:02:01

客服系統(tǒng)

2010-08-02 13:55:20

2016-03-21 11:09:52

Tableau/大數(shù)據(jù)

2025-03-20 12:33:36

2009-06-23 14:22:00

DOM文檔XML文件Java

2019-05-27 14:03:48

開發(fā)技能代碼

2022-01-27 14:12:49

Python游戲腳本

2021-12-30 10:55:54

Python游戲腳本

2021-06-10 06:57:39

Redis存儲(chǔ)數(shù)據(jù)庫(kù)

2020-11-02 14:38:56

Java 深度學(xué)習(xí)模型

2020-09-25 07:49:36

策略模式Spring
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人精品视频 | 成人在线视频免费观看 | 国产精品久久久久久久久久久久久 | 精品国产欧美一区二区 | 亚洲视频欧美视频 | 日韩精品在线一区 | 国产一区二区三区日韩 | 日本久草 | 亚洲美女一区二区三区 | 久草成人 | 亚洲黄色一区二区三区 | 7799精品视频天天看 | 中文字幕在线免费观看 | 日韩欧美在线不卡 | 成人看片在线观看 | 国产精品海角社区在线观看 | 久久久影院 | av资源中文在线 | av午夜激情 | 成人免费大片黄在线播放 | 日韩中文字幕一区二区 | 精品av | 亚洲成人中文字幕 | 久久久123 | 97精品超碰一区二区三区 | 日韩超碰在线 | 成人毛片视频免费 | 中文字幕一区在线观看视频 | 亚洲国产成人精品女人久久久 | 久久久久久久一区 | 国产99久久 | 欧美精品一区二区三区蜜桃视频 | 韩国理论电影在线 | 欧美激情综合色综合啪啪五月 | 久久久久国产精品 | 亚洲精品欧美一区二区三区 | 色爱综合 | 中文字幕精品一区 | 国产精品美女www爽爽爽视频 | 成人福利影院 | 亚洲人人 |