您好,登錄后才能下訂單哦!
詳解XML,Object,Json轉換與Xstream的使用
1.Xstream的特點:
這里直接引用Xstream官方的敘述:
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.常用方法:
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
/** * 將對象轉換成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象轉換成對象
/** * 將成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
/** * 將對象轉換成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); }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。