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

XML和JSON互相轉換原來這么簡單

移動開發 Android
最近在折騰移動支付,什么移動支付、支付寶支付、銀聯支付、還有什么國外的 PayPal。有的支付系統還用著 XML 這種數據格式,和我們現在流行的 JSON 不太符合

[[347693]]

 1. 前言

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

2. 依賴

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

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

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

3. XML 與 Java 對象互轉

XML 和 JSON 互相轉換的流程都是先轉換為 Java 對象,然后再轉換為目標類型。

XmlMapper

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

  1. XmlMapper xmlMapper = new XmlMapper(); 

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

  1. XmlMapper build = XmlMapper.builder() 
  2.                 //  忽略實體類沒有對應屬性    如果為 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 進行演示,先定義一個test.xml的 XML 文件,內容為

  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[]]>比轉義字符要香的多,可讀性更強。

對應的實體類為:

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

然后利用上面構造的builder來進行轉換操作:

  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); 

既然能夠轉對象那么再轉 JSON 也沒啥難度了。

當然也支持注解的方式。

4. 總結

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

本文轉載自微信公眾號「碼農小胖哥」,可以通過以下二維碼關注。轉載本文請聯系碼農小胖哥公眾號。

 

責任編輯:武曉燕 來源: 碼農小胖哥
相關推薦

2021-04-19 05:42:51

Mmap文件系統

2023-11-01 14:49:07

2009-09-14 19:11:20

XML和Java Be

2014-10-08 15:00:50

SUSE操作系統云計算

2019-03-15 10:55:12

通信系統手機

2023-09-22 08:00:00

分布式鎖Redis

2020-09-24 06:44:54

HTTPS網站 HTTP

2020-11-27 10:34:01

HTTPHTTPS模型

2009-08-13 09:33:07

JavaBean到XM

2014-11-25 15:02:01

客服系統

2010-08-02 13:55:20

2016-03-21 11:09:52

Tableau/大數據

2025-03-20 12:33:36

2009-06-23 14:22:00

DOM文檔XML文件Java

2019-05-27 14:03:48

開發技能代碼

2022-01-27 14:12:49

Python游戲腳本

2021-12-30 10:55:54

Python游戲腳本

2021-06-10 06:57:39

Redis存儲數據庫

2020-11-02 14:38:56

Java 深度學習模型

2019-05-14 10:50:11

HTTP協議HttpServlet
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区在线观看 | 欧美日韩手机在线观看 | 亚洲风情在线观看 | 亚洲在线一区 | 51ⅴ精品国产91久久久久久 | 国产在线精品一区二区 | 欧美色999| 亚洲毛片在线 | 国产精品久久久久久久久久不蜜臀 | 欧美精品一二三区 | 亚洲精品一区二区三区中文字幕 | 精品久久香蕉国产线看观看亚洲 | www.日韩高清| 日韩一区二区三区在线观看 | 亚州视频在线 | 国产综合在线视频 | 亚洲欧美国产精品一区二区 | 免费观看一区二区三区毛片 | 一区二区成人 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 性色av一区二区三区 | 日韩国产中文字幕 | 91av免费版 | 激情综合五月天 | 日韩欧美在线视频一区 | 久夜精品| 欧美在线亚洲 | 天天躁日日躁狠狠的躁天龙影院 | 91福利网| www.亚洲.com| 久久夜色精品国产 | 在线视频日韩 | 91免费观看国产 | 亚洲成人午夜在线 | 欧美h | 欧美综合国产精品久久丁香 | 在线视频h | 欧美a在线| 国产精品久久久精品 | 欧美日韩电影一区 | 中文字幕av一区 |