国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解XML,Object,Json轉換與Xstream的使用

詳解XML,Object,Json轉換與Xstream的使用

2020-08-06 15:10CrazyCodeBoy Java教程

這篇文章主要介紹了詳解XML,Object,Json轉換與Xstream的使用的相關資料,需要的朋友可以參考下

詳解XML,Object,Json轉換與Xstream的使用

1.Xstream的特點:

這里直接引用Xstream官方的敘述:

  1. 靈活易用:在更高的層次上提供了簡單、靈活、易用的統一接口,用戶無需了解項目的底層細節
  2. 無需映射:大多數對象都可以在無需映射的情況下進行序列化與反序列化的操作
  3. 高速穩定:設計時力求達到的最重要的指標是解析速度快、占用內存少,以使之能夠適用于大的對象處理或是對信息吞吐量要求高的系統
  4. 清晰易懂:項目采用reflection機制得到無冗余信息的XML文件。所生成 的XML文件較本地Java序列化產物更簡潔,格式更清晰,更便于用戶閱讀
  5. 無需修改:完全序列化包括private和final類型在內的全部內部字段。支 持非公有類和內部類,類可以沒有缺省的構造函數
  6. 易于集成:通過實現特定的接口,XStream可以直接與其它任何樹型結構進行序列化與反序 列化操作(而不僅僅是XML格式)
  7. 靈活轉換:轉換策略是可以定制的,允許用戶自定義特殊類型的對象如何以XML格式存儲。
  8. 錯誤處理:由于XML資料不合法而造成異常時,會提供詳細地診斷信息幫助處理問題。

 2.初始化XStream類

說Xstream簡單是因為它提供統一入口,主要類XStream用作所有項目的入口點。它將重要組件集成在一起,提供更簡單易用的API操作。

我們可以使用以下的語句進行初始化操作:

XStreamxstream = new XStream();

默認情況下,XStream會 采用Xpp3庫,XPP3是一種運行效率非常高的XML全解析實現。如果你不想依靠Xpp3庫的話,也可以使用一個標準的JAXP DOM解析器,可以采用以下語句進行初始化:

//不使用XPP3庫
XStreamxstream = new XStream(new DomDriver());

此xstream實例,為線程安全的,可以供多個線程進行調用,共享使用。參考 com.thoughtworks.xstream.io.xml包,會發現系統提供了多種標識解析器供我們選擇,包括,DomDriver、 JDomDriver、StaxDriver等等。

前面提到了Xstream提供了對Json的支持,是因為Xstream內置了兩個Driver:

1.JsonHierarchicalStreamDriver:不依賴其他類庫,只實現 obj->JSON
2.JettisonMappedXmlDriver:依賴jettison類庫,實現 JSON->obj or obj->JSON

 兩種Driver在處理相同設置的Object時會得到不同的JSON串,JsonHierarchicalStreamDriver得到的串更簡潔,確如官網所說。

JsonHierarchicalStreamDriver有個小問題——默認輸出帶格式的JSON串,結構中帶空格、換行,并且沒有提供修飾方式。

3.常用方法:

?
1
2
3
4
5
6
7
8
9
xStream.toXML(object):將對象轉換成XML、Json。
xStream.toXML(obj, outputStream):將對象轉換XML、Json并封裝成輸出流。
xStream.toXML(object, writer): 將對象轉換XML、Json并封成寫入流。
xStream.fromXML():將XML、Json轉換成對象,此方法接受File、InputStream、Reader、String、URL類型的參數。
xStream.alias("news", News.class):為指定類名創建別名。
xStream.useAttributeFor(News.class, "id"):將id設為 News的元素的屬性。
xStream.aliasField("other", BookShelf.class,"remark"):修改節點名稱,將BookShelf類中的remark節點名修改為other。
xStream.addImplicitCollection(BookShelf.class, "books"):去掉集體節點的父節點。
xStream.aliasAttribute("姓名", "name"):修改屬性的name,為姓名。

4.實例1:將對象轉換成XML  

?
1
2
3
4
5
6
7
8
9
10
11
/**
  * 將對象轉換成Xml格式的字符串
  * @param object 要轉換成Xml的對象
  * @return String:Xml格式的字符串
  */
  public static String convertObject2Xml(Object object) {
   xStream=new XStream();
   xStream.alias("news", News.class);//修改元素名稱
   xStream.useAttributeFor(News.class, "id");//將id設為News的元素的屬性
   return xStream.toXML(object);   
  }

5.實例2:將XML象轉換成對象

?
1
2
3
4
5
6
7
8
9
10
11
/**
   * 將成Xml格式的字符串轉換成Java對象
   * @param inputStream 要轉換成Java對象的inputStream
   * @return String:Xml格式的字符串
   */
  public static Object convertXml2Object(InputStream inputStream) {
    xStream=new XStream();
    xStream.alias("news", News.class);//修改元素名稱
    xStream.useAttributeFor(News.class, "id");//將id設為News的元素的屬性
    return xStream.fromXML(inputStream);//此方法也可將xml轉換成map
  }

6.實例3:將對象轉換成Json

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
   * 將對象轉換成Json格式的字符串
   * @param object 要轉換成Json的對象
   * @return String:Json格式的字符串
   */
  public static String convertObject2Json(Object object) {   
      xStream = new XStream(newJsonHierarchicalStreamDriver() {
      publicHierarchicalStreamWriter createWriter(Writer out) {
        //刪除根節點
        return new JsonWriter(out, JsonWriter.DROP_ROOT_MODE);
      }
    });  
    return xStream.toXML(object);   
  }

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/fengyuzhengfan/article/details/39654025

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品剧情一区二区三区 | 天天干天天干天天干天天射 | 久久久看片| 2015成人永久免费视频 | 欧美色图一区 | 日本一区二区三区四区 | 亚洲欧美一区二区三区在线 | 九九在线视频 | 日韩精品一区二区在线观看 | 久久精品小视频 | 国产精品网站在线看 | 成人羞羞网站 | 国产成人精品一区二区在线 | 日本不卡免费新一二三区 | 久久久久久久久成人 | 播放毛片 | 国产伦精品一区二区三区高清 | 91精品欧美久久久久久动漫 | 伊人在线 | 午夜视频在线免费观看 | 国产精品视频久久久 | 成年人免费在线播放视频 | 国产精品高潮呻吟久久 | 奇米影视7777 | 老牛嫩草一区二区三区眼镜 | 国产第一区在线观看 | 色综合久久一区二区三区 | 国产小视频在线 | 春色网站 | 久久99精品久久久久久国产越南 | 天堂久久久久久 | 99热最新| 操操网站| 日韩精品视频在线 | 在线一区观看 | 国产精品久久久久久亚洲调教 | 日韩久久久久久 | 国产视频一二三区 | 精产品自偷自拍 | 日韩综合在线 | 欧美一区二区三区电影 |