可讀性:XML" />

日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

接口響應以XML數據格式輸出,這些方法你都知道嗎?

來源: 責編: 時間:2024-01-26 09:02:19 288觀看
導讀環境:SpringBoot3.1.7 + JDK171. 簡介XML與JSON都是用于數據交換的格式,但它們之間存在一些關鍵差異,決定了何時應該使用XML而不是JSON,以及何時應該使用JSON而不是XML?一般會從如下幾方面考慮使用哪種數據格式:
可讀性:XML

環境:SpringBoot3.1.7 + JDK17iUm28資訊網——每日最新資訊28at.com

1. 簡介

XML與JSON都是用于數據交換的格式,但它們之間存在一些關鍵差異,決定了何時應該使用XML而不是JSON,以及何時應該使用JSON而不是XML?一般會從如下幾方面考慮使用哪種數據格式:
iUm28資訊網——每日最新資訊28at.com

可讀性:XML 文檔具有更好的可讀性,因為它們使用類似于HTML的標簽結構。這對于需要人工解析和編輯的文檔特別有用。而JSON文檔的鍵值對結構更緊湊,但在可讀性方面可能不如XML。iUm28資訊網——每日最新資訊28at.com

標準化和互操作性:XML 有一個強大的標準體系,包括 XML Schema、XSLT、XPath 等,這使得 XML 在跨平臺、跨語言的數據交換中非常受歡迎。而JSON雖然也有一些標準(如JSON Schema),但其普及度和成熟度不如XML。iUm28資訊網——每日最新資訊28at.com

數據綁定和模式:XML 支持將數據結構與標記語言(如 HTML)結合使用,這使得 XML 非常適合用于數據綁定。而JSON更傾向于簡單的鍵值對結構,沒有這種數據綁定功能。iUm28資訊網——每日最新資訊28at.com

數據類型:XML 支持內置的數據類型(如整數、布爾值等),這有助于更準確地表示數據。而JSON的數據類型系統更為簡單,只支持基本的數據類型和數組。iUm28資訊網——每日最新資訊28at.com

而如今采樣XML格式進行輸出的已經非常少了,不過像銀行這樣的系統還是非常多的,最近做的一個項目與農行對接他們的接口就是采用XML進行數據交換(真麻煩啊,不過還好之前了解過JAXB)。iUm28資訊網——每日最新資訊28at.com

接下來我們通過實例講解在SpringBoot中如何控制輸出XML數據格式iUm28資訊網——每日最新資訊28at.com

2. 實戰案例

2.1 通過jackson

首先需要在項目中引入jackson xml依賴包iUm28資訊網——每日最新資訊28at.com

<dependency>  <groupId>com.fasterxml.jackson.dataformat</groupId>  <artifactId>jackson-dataformat-xml</artifactId></dependency>

隨意定義數據模型iUm28資訊網——每日最新資訊28at.com

public class Message {  private String title ;  private String content ;}

Controller接口iUm28資訊網——每日最新資訊28at.com

@RestController@RequestMapping("/mfc")public class MessageFormatController {    @GetMapping(value = "/index")  public Object index() {    return new Message("標題", "內容") ;  }  }

訪問接口iUm28資訊網——每日最新資訊28at.com

圖片圖片iUm28資訊網——每日最新資訊28at.com

輸出了XML,是不是覺得非常奇怪,就引入了xml依賴什么配置都沒有就輸出了XML數據格式。這是由于在容器在初始化HttpMessageConverter消息轉換器時有判斷,如果存在XML相關的轉換起就會加入到其中。iUm28資訊網——每日最新資訊28at.com

public class WebMvcConfigurationSupport {  private static final boolean jackson2XmlPresent;  static {    jackson2XmlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader);  }  protected final void addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters) {    if (jackson2XmlPresent) {      Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.xml();      if (this.applicationContext != null) {        builder.applicationContext(this.applicationContext);      }      messageConverters.add(new MappingJackson2XmlHttpMessageConverter(builder.build()));    }  }}

而上面的類方法的調用是初始化HttpMessageConverters時創建iUm28資訊網——每日最新資訊28at.com

public class HttpMessageConvertersAutoConfiguration {  @Bean  @ConditionalOnMissingBean  public HttpMessageConverters messageConverters(ObjectProvider<HttpMessageConverter<?>> converters)    // 在該構造方法中調用上面的方法初始化默認的轉換器    return new HttpMessageConverters(converters.orderedStream().toList()) ;  }}

這里是一個過程,其實本身MappingJackson2XmlHttpMessageConverter也被定義為bean對象了。iUm28資訊網——每日最新資訊28at.com

protected static class MappingJackson2XmlHttpMessageConverterConfiguration {  @Bean  @ConditionalOnMissingBean  public MappingJackson2XmlHttpMessageConverter mappingJackson2XmlHttpMessageConverter(      Jackson2ObjectMapperBuilder builder) {    return new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build());  }}

自定義XML的標簽名稱iUm28資訊網——每日最新資訊28at.com

@JacksonXmlRootElement(localName = "msg")public class Message {  private String title ;  @JacksonXmlProperty(localName = "body")  private String content ;}

輸出如下iUm28資訊網——每日最新資訊28at.com

圖片圖片iUm28資訊網——每日最新資訊28at.com

而對于上面的接口,我們可以通過Accept請求header控制輸出的消息格式iUm28資訊網——每日最新資訊28at.com

圖片圖片iUm28資訊網——每日最新資訊28at.com

2.2 使用Xml視圖技術

@RestController@RequestMapping("/jaxb")public class JaxbController {  @GetMapping("/xml")  public ModelAndView xml() {    MappingJackson2XmlView view = new MappingJackson2XmlView() ;    ModelAndView model = new ModelAndView(view) ;    Map<String, Object> modelMap = new HashMap<>() ;    modelMap.put("user", new User(66, "張三", "女")) ;    modelMap.put("zs", new User(55, "李四", "男")) ;    view.setModelKey("zs") ;    model.addAllObjects(modelMap) ;    return model ;  }}

數據模型定義iUm28資訊網——每日最新資訊28at.com

@XmlRootElement(name = "user")public class User {  private Integer age ;  private String name ;  private String sex ;}

輸出如下iUm28資訊網——每日最新資訊28at.com

iUm28資訊網——每日最新資訊28at.com

2.3 使用JAXB技術

@GetMapping("/marshaller")public MarshallingView marshaller() {  Jaxb2Marshaller marshaller = new Jaxb2Marshaller() ;  marshaller.setClassesToBeBound(User.class) ;  MarshallingView view = new MarshallingView(marshaller) ;  view.getAttributesMap().put("user", new User(22, "張三", "男")) ;  return view ;}

輸出如下iUm28資訊網——每日最新資訊28at.com

圖片iUm28資訊網——每日最新資訊28at.com

嵌套屬性支持iUm28資訊網——每日最新資訊28at.com

@XmlRootElement(name = "user")public class User {  private Integer age ;  private String name ;  private String sex ;  @XmlElement(name = "address")  private Address address = new Address("四川", "成都") ;  }

輸出iUm28資訊網——每日最新資訊28at.com

圖片圖片iUm28資訊網——每日最新資訊28at.com

以上基于JAXB需要引入如下依賴包:iUm28資訊網——每日最新資訊28at.com

<dependency>  <groupId>jakarta.xml.bind</groupId>  <artifactId>jakarta.xml.bind-api</artifactId></dependency><dependency>  <groupId>org.glassfish.jaxb</groupId>  <artifactId>jaxb-runtime</artifactId></dependency><dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-oxm</artifactId></dependency>

以上就是有關輸出XML的所有內容,希望本文對你有所幫助。iUm28資訊網——每日最新資訊28at.com

完畢!!!iUm28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-68325-0.html接口響應以XML數據格式輸出,這些方法你都知道嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Dalvik與ART的架構差異,你學會了嗎?

下一篇: 如何使用Python、Apache Kafka和云平臺構建健壯的實時數據管道

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产三级精品在线不卡| 欧美日韩午夜| 欧美一区二区在线看| 欧美电影免费观看网站| 久热精品视频在线| 欧美精品在线一区二区| 免费高清在线视频一区·| 亚洲制服av| 亚洲精品资源美女情侣酒店| 国产在线麻豆精品观看| 亚洲精品视频在线观看免费| 亚洲一区在线播放| 亚欧成人精品| 欧美在线不卡| 国产精品vvv| 一区二区激情视频| 午夜精品av| 国产性做久久久久久| 老牛嫩草一区二区三区日本| 亚洲香蕉在线观看| 一区二区国产日产| 亚洲国产一区二区三区青草影视 | 欧美午夜不卡视频| 亚洲区在线播放| 欧美69视频| 国内久久视频| 久久精品国产欧美激情| 经典三级久久| 久久精品日产第一区二区| 欧美三日本三级三级在线播放| 国产一区二区三区免费在线观看| 久久国产精品久久久久久| 国产欧美视频一区二区三区| 欧美一区二区三区另类| 欧美视频在线不卡| 久久爱www| 99精品国产高清一区二区| 国产美女扒开尿口久久久| 久久嫩草精品久久久精品| 国产婷婷精品| 亚洲黑丝在线| 亚洲激情视频网| 亚洲女人av| 欧美精品偷拍| 伊人精品视频| 香蕉久久夜色精品国产使用方法| 欧美精品一区在线发布| 好吊色欧美一区二区三区四区| 亚洲性人人天天夜夜摸| 欧美日韩国产色综合一二三四 | 亚洲无线视频| 欧美精品少妇一区二区三区| 亚洲大片免费看| 久久精品夜色噜噜亚洲a∨| 国产精品欧美一区喷水 | 久久亚洲欧美| 国产手机视频精品| 午夜老司机精品| 国产精品jizz在线观看美国 | 亚洲精选中文字幕| 欧美freesex交免费视频| 精品动漫一区| 久久久久久久综合色一本| 国产精品综合视频| 亚洲一区二区三区久久| 欧美日韩小视频| 日韩午夜电影| 欧美黑人国产人伦爽爽爽| 亚洲国产成人tv| 欧美88av| 亚洲激情影视| 欧美高清视频www夜色资源网| 在线不卡a资源高清| 久久手机精品视频| 激情欧美一区二区| 久久亚洲精选| 亚洲国产老妈| 欧美成人高清| 亚洲精品视频免费观看| 欧美激情一区二区三区全黄| 亚洲欧洲久久| 欧美日韩精品免费看| 日韩一级精品视频在线观看| 欧美久久一区| 一区二区久久久久| 国产精品成人一区二区艾草| 亚洲综合大片69999| 国产精品亚洲综合天堂夜夜| 羞羞色国产精品| 国产综合欧美| 美国三级日本三级久久99| 亚洲人成精品久久久久| 欧美国产精品一区| 99re6热在线精品视频播放速度| 欧美日韩另类视频| 亚洲一区二区三区精品动漫| 国产精品亚洲视频| 欧美在线影院| 亚洲高清电影| 欧美日韩精品免费| 亚洲一区欧美| 国产一区91精品张津瑜| 久久综合给合久久狠狠色| 亚洲人体大胆视频| 欧美性事在线| 久久激情五月丁香伊人| 在线日韩欧美视频| 欧美人妖在线观看| 亚洲女优在线| 黄色成人在线| 欧美成人日韩| 亚洲淫性视频| 狠狠色伊人亚洲综合网站色| 欧美成人激情视频免费观看| 正在播放亚洲一区| 国产日韩综合一区二区性色av| 老司机午夜精品| 一本色道久久综合一区| 国产日韩高清一区二区三区在线| 开心色5月久久精品| 一本久久综合亚洲鲁鲁五月天| 国产精品稀缺呦系列在线| 久久婷婷影院| 一区二区欧美国产| 国产在线视频欧美| 欧美精品在线免费播放| 性欧美超级视频| 亚洲韩国青草视频| 国产精品爽爽ⅴa在线观看| 久久综合色一综合色88| 国产精品99久久久久久www| 国产一区日韩一区| 欧美日韩另类视频| 久久久久久久综合狠狠综合| 一区二区三区精品视频| 国一区二区在线观看| 欧美日本在线| 久久精品视频在线看| 一本色道久久88亚洲综合88| 国产一区二区三区奇米久涩| 欧美精品电影在线| 久久国产精品久久精品国产| 夜夜嗨av一区二区三区网页| 激情av一区二区| 欧美视频精品一区| 久久综合色影院| 午夜精品亚洲| 99精品久久久| 亚洲福利视频在线| 国产欧美日韩麻豆91| 欧美区日韩区| 久久伊人一区二区| 午夜日韩av| 一区二区三区产品免费精品久久75| 好吊妞**欧美| 国产精品久久网| 欧美精品aa| 久久综合网络一区二区| 午夜日韩av| 中国亚洲黄色| 亚洲精品欧美日韩| 原创国产精品91| 国产亚洲福利| 国产精品色在线| 欧美四级在线| 欧美人与禽性xxxxx杂性| 乱人伦精品视频在线观看| 欧美在线关看| 亚洲欧美日韩一区在线观看| 一区二区三区**美女毛片| 亚洲国产天堂久久国产91| 韩国成人精品a∨在线观看| 国产精品亚洲欧美| 国产精品久久国产愉拍| 欧美欧美天天天天操| 欧美阿v一级看视频| 久久久欧美一区二区| 欧美一区二区三区免费在线看| 亚洲一区二区av电影| 夜夜嗨av一区二区三区四区| 亚洲精品免费一二三区| 亚洲国产日韩一区| 在线日韩av| 亚洲国产成人久久综合| 永久免费精品影视网站| 国外成人网址| 国产一区二三区| 国产亚洲一二三区| 国产亚洲在线| 国产尤物精品| 国内视频一区| 韩国欧美一区| 精品成人国产| 在线看片成人| 亚洲电影观看| 亚洲国产精品久久久久婷婷老年 | 国产精品色婷婷| 国产精品入口福利| 国产精品丝袜91| 国产精品一区免费观看| 国产欧美日韩精品在线| 国产一区二区黄色| 黄色国产精品| ●精品国产综合乱码久久久久|