日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

使用XStream将JSON转换为XML到Java对象

發布時間:2023/12/3 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用XStream将JSON转换为XML到Java对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XStream庫可以是將JSON從Java轉換為XML來回轉換的有效工具。
讓我們逐一探究它們中的每一個,并查看使用了哪個驅動程序。

處理JSON

要將JSON轉換為Java對象,您要做的就是使用適當的驅動程序初始化XStream對象,并準備將對象序列化到JSON(和從JSON序列化)。

XStream當前提供了兩個用于JSON到對象ocnversion的驅動程序:

  • JsonHierarchicalStreamDriver:
  • 這沒有附加的依賴關系,但是只能用于編寫XML

  • JettisonMappedXmlDriver:這是基于Jettison的,還可以再次將JSON反序列化為Java對象。
  • Jettison驅動程序

    Jettison驅動程序使用Jettison StAX解析器讀取和寫入JSON格式的數據。 從1.2.2版開始,它在XStream中可用,并在com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver類中實現。

    為了使此工作正常,我們需要在pom中添加依賴項:

    <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轉換為對象并將對象轉換為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個驅動程序:

  • StaxDriver
  • XStream xstream = new XStream(new StaxDriver()); xstream.toXML(xml); //converts Object to XML xstream.fromXML(obj); //Converts XML to Object

  • DomDriver
  • XStream xstream = new XStream(new DomDriver()); xstream.toXML(xml); //converts Object to XML xstream.fromXML(obj); //Converts XML to Object
  • 最后,讓我們在一個類中查看所有這些內容:

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

    編寫一個JUnit類進行測試:

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

    完整的代碼可以在這里看到。
    在下一個博客中,我們將比較用例,探索適合的用例。

    翻譯自: https://www.javacodegeeks.com/2014/07/converting-json-to-xml-to-java-objects-using-xstream.html

    總結

    以上是生活随笔為你收集整理的使用XStream将JSON转换为XML到Java对象的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。