使用XStream将JSON转换为XML到Java对象
XStream庫可以是將JSON從Java轉(zhuǎn)換為XML來回轉(zhuǎn)換的有效工具。
讓我們逐一探究它們中的每一個(gè),并查看使用了哪個(gè)驅(qū)動程序。
處理JSON
要將JSON轉(zhuǎn)換為Java對象,您要做的就是使用適當(dāng)?shù)尿?qū)動程序初始化XStream對象,并準(zhǔn)備將對象序列化到JSON(和從JSON序列化)。
XStream當(dāng)前提供了兩個(gè)用于JSON到對象ocnversion的驅(qū)動程序:
Jettison驅(qū)動程序
Jettison驅(qū)動程序使用Jettison StAX解析器讀取和寫入JSON格式的數(shù)據(jù)。 從1.2.2版開始,它在XStream中可用,并在com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver類中實(shí)現(xiàn)。
為了使此工作正常,我們需要在pom中添加依賴項(xiàng):
<dependencies><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.7</version></dependency><dependency><groupId>org.codehaus.jettison</groupId><artifactId>jettison</artifactId><version>1.1</version></dependency></dependencies>以及將JSON轉(zhuǎn)換為對象并將對象轉(zhuǎn)換為Json的代碼:
XStream xstream = new XStream(new JettisonMappedXmlDriver()); xstream.toXML(xml); //converts Object to JSON xstream.fromXML(obj); //Converts Json to Object將對象序列化為XML
要將對象序列化為XML XStream,請使用2個(gè)驅(qū)動程序:
最后,讓我們在一個(gè)類中查看所有這些內(nèi)容:
package com.anirudh;import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; import com.thoughtworks.xstream.io.xml.DomDriver; import com.thoughtworks.xstream.io.xml.StaxDriver;/*** Created by anirudh on 15/07/14.*/ public class Transformer<T> {private static final XStream XSTREAM_INSTANCE = null;public T getObjectFromJSON(String json){return (T) getInstance().fromXML(json);}public String getJSONFromObject(T t){return getInstance().toXML(t);}private XStream getInstance(){if(XSTREAM_INSTANCE==null){return new XStream(new JettisonMappedXmlDriver());} else {return XSTREAM_INSTANCE;}}public T getObjectFromXML(String xml){return (T)getStaxDriverInstance().fromXML(xml);}public String getXMLFromObject(T t){return getStaxDriverInstance().toXML(t);}public T getObjectFromXMLUsingDomDriver(String xml){return (T)getDomDriverInstance().fromXML(xml);}public String getXMLFromObjectUsingDomDriver(T t){return getDomDriverInstance().toXML(t);}private XStream getStaxDriverInstance(){if(XSTREAM_INSTANCE==null) {return new XStream(new StaxDriver());}else{return XSTREAM_INSTANCE;}}private XStream getDomDriverInstance(){if(XSTREAM_INSTANCE==null){return new XStream(new DomDriver());}else{return XSTREAM_INSTANCE;}} }編寫一個(gè)JUnit類進(jìn)行測試:
package com.anirudh;import com.anirudh.domain.Product; import org.junit.Before; import org.junit.Test;/*** Created by anirudh on 15/07/14.*/ public class TransformerTest {private Transformer<Product> productTransformer;private Product product;@Beforepublic void init(){productTransformer = new Transformer<Product>();product = new Product(123,"Banana",23.00);}@Testpublic void testJSONToObject(){String json = productTransformer.getJSONFromObject(product);System.out.println(json);Product convertedproduct = productTransformer.getObjectFromJSON(json);System.out.println(convertedproduct.getName());}@Testpublic void testXMLtoObjectForStax(){String xml = productTransformer.getXMLFromObject(product);System.out.println(xml);Product convertedproduct = productTransformer.getObjectFromXML(xml);System.out.println(convertedproduct.getName());}@Testpublic void testXMLtoObjectForDom(){String xml = productTransformer.getXMLFromObjectUsingDomDriver(product);System.out.println(xml);Product convertedproduct = productTransformer.getObjectFromXMLUsingDomDriver(xml);System.out.println(convertedproduct.getName());}} 完整的代碼可以在這里看到。
在下一個(gè)博客中,我們將比較用例,探索適合的用例。
翻譯自: https://www.javacodegeeks.com/2014/07/converting-json-to-xml-to-java-objects-using-xstream.html
總結(jié)
以上是生活随笔為你收集整理的使用XStream将JSON转换为XML到Java对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (linux system)
- 下一篇: ddos攻击报网警(网警ddos攻击)