XML,Object,Json转换之浅析Xstream的使用

请尊重他人的劳动成果,转载请注明出处:XML,Object,Json转换之浅析Xstream的使用

XStream的是一个简单的库。主要用于Java对象和XML之间的转换。但XStream也内置了对Json的支持。

1.Xstream的特点:

这里直接引用Xstream官方的叙述:

灵活易用:在更高的层次上提供了简单、灵活、易用的统一接口,用户无需了解项目的底层细节

无需映射:大多数对象都能够在无需映射的情况下进行序列化与反序列化的操作

快速稳定:设计时力求达到的最重要的指标是解析速度快、占用内存少,以使之可以适用于大的对象处理或是对信息吞吐量要求高的系统

清晰易懂:项目採用reflection机制得到无冗余信息的XML文件。

所生成 的XML文件较本地Java序列化产物更简洁,格式更清晰。更便于用户阅读

无需改动:全然序列化包含private和final类型在内的所有内部字段。

支 持非公有类和内部类。类能够没有缺省的构造函数

易于集成:通过实现特定的接口,XStream能够直接与其他不论什么树型结构进行序列化与反序 列化操作(而不不过XML格式)

灵活转换:转换策略是能够定制的,同意用户自己定义特殊类型的对象怎样以XML格式存储。

错误处理:因为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.经常用法:

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

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/blfshiye/p/4910938.html

XML,Object,Json分析转换Xstream采用相关推荐

  1. json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)...

    1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...

  2. xml与json互相转换

    import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson ...

  3. 个人永久性免费-Excel催化剂功能第90波-xml与json数据结构转换表格结构

    在网络时代,大量的数据交互以xml和json格式提供,特别是系统间的数据交互和网络WebAPI.WebService接口的数据提供,都是通过结构化的xml或json提供给其他应用调用返回数据. 若能提 ...

  4. xStream完美转换XML、JSON

    xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...

  5. dict 转换成json_Python XML转换为JSON,XML转换为Dict

    dict 转换成json Today we will learn how to convert XML to JSON and XML to Dict in python. We can use py ...

  6. xml和json转换的在线工具

    Xml与Json在线转换工具,Xml和Json互转-沐杉实用工具 Xml和Json互转工具: 1.支持将Xml数据转为Json字符串格式 2.支持将Json字符串转换为Xml格式的数据 3.Json转 ...

  7. xStream转换XML、JSON

    一. 简介 xStream可以很容易实现Java对象和xml文档互相转换, 可以修改某个特定的属性和节点名称,xStream提供annotation注解, 可以在JavaBean中完成对xml节点和属 ...

  8. 【4-8】《XML与JSON》——XML、解析XML、SAX、DOM4J、XStream、JSON、Gson、Fastjson

    文章目录 XML与JSON 一.XML 1.XML概述 1.XML语法格式 2.语法进阶CDATA(了解) 2.解析XML 1.SAX解析 2.DOM解析 3.JDOM解析 4.DOM4J解析 3.D ...

  9. JSON与XML优缺点对比分析

    1. 定义介绍 1.1 XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种 ...

最新文章

  1. 检索图书 FindMess.java
  2. Linux共享内存(二)
  3. MySQL安装失败问题
  4. AngularJs详细
  5. QT编程中遇到的问题总结
  6. expect脚本的简单应用
  7. 数据库的时间格式(毫秒表示)
  8. Java语法基础学习DayNineteen(反射机制)
  9. 生成并解析cron表达式
  10. 自定义Qml控件:ImageButton
  11. 矩阵分析之 实矩阵分解(3)Cholesky分解
  12. 这是我看过最棒的MEMS介绍文章,从原理制造到应用全讲透(强推)
  13. DEBUG:谷歌学术无法创建账号
  14. APT(Android Performance Testing Tools)安卓平台高效性能测试工具
  15. Market Risk Modeling
  16. ACwing 1018 最低通行费
  17. java判断单元格是否是日期_Excel单元格,日期/时间返回Int而不是日期/时间字符串...
  18. Maven打包(瘦身打包部署),不包含第三方依赖jar包
  19. Stammering Aliens
  20. 报道|香港科大商学院【在商言商·思享会】(第一场)“企业如何抓住新一代科技红利”...

热门文章

  1. 修改Visual Studio 2010帮助位置
  2. Page 的生命周期学习小结
  3. [转]web标准的几个误区
  4. SDR、DDR、QDR存储器的比较
  5. ADC的有效位数、信噪比、总谐波失真的参数计算
  6. oracle java api_oracle java api
  7. 机器学习:数据驱动的科学
  8. Angular vs React 最全面深入对比
  9. 超出父控件怎么才能点击
  10. 专访1药网技术副总裁黄哲铿:揭秘技术跨界管理之道