XML,Object,Json分析转换Xstream采用
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);
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
XML,Object,Json分析转换Xstream采用的更多相关文章
- 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:// ...
- 个人永久性免费-Excel催化剂功能第90波-xml与json数据结构转换表格结构
在网络时代,大量的数据交互以xml和json格式提供,特别是系统间的数据交互和网络WebAPI.WebService接口的数据提供,都是通过结构化的xml或json提供给其他应用调用返回数据.若能提供 ...
- java下XML与JSON互相转换的Utils类
原文:http://heipark.iteye.com/blog/1394844 需要json-lib-2.1-jdk15.jar和xom-1.2.5.jar,maven pom.xml如下: < ...
- c#中 xml和json 互相转换
--xml转json XmlDocument doc = new XmlDocument(); doc.LoadXml(result); string json = Newtonsoft.Json.J ...
- C#中XML和json互相转换
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...
- XML与JSON的转换
-(void)test { //XML文本范例 NSString *testXMLString = @"Cake0.55RegularChocolateBluebe ...
- nodejs XML和json互相转换
Docs: https://www.npmjs.com/package/fast-xml-parser const xml = ` <user> <name>ajanuw< ...
- xStream完美转换XML、JSON
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...
- xStream完美转换XML、JSON(转)
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...
随机推荐
- spring AOP 是如何一步一步被简化的
Aop的配置使用 Aop的思想实现是基于代理设计模式的, 动态增加某些功能. 因此在最开始阶段 1 所有需要被织入的类都需要被代理(ProxyFactoryBean). 2 切面(advisor)的实 ...
- JQuery - 垂直显示隐藏DIV
效果: 代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFor ...
- LEAVE LIST-PROCESSING和LEAVE TO LIST-PROCESSING事件的作用
START-OF-SELECTION. MESSAGE '屏幕报错' TYPE 'S' DISPLAY LIKE 'E'. LEAVE LIST-PROCESSING. 这样子的话 报错会返回包选择屏 ...
- ajax基础入门
补充一下Ajax的使用方法 //可以复制下面两种方法在百度上实验 //jquery的使用方法 $.ajax({ url:"index.php", success:function( ...
- js / ajax 成功提交后怎么跳转到另外一个页面?
把success那段改成 success : function (r) { if ( r.status == 'error' ){ alert(msg[r.msgno]); } else if (r. ...
- C++中字母大写和小写转换实现的优化
C++中字母大写和小写转换实现的优化 write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 在本文中所有以转换为小写为例. 从推荐复用代 ...
- Windows Azure使用体验
Windows Azure在今年6月6日由世纪互联代理在中国运营,目前只能体验,没有开放注册.不过,体验的门槛比较高,只对企业开放,未来大量对外开放使用貌似时间还早.大家都懂得,“国内门槛高”.本人在 ...
- 主从mysql 同步设置
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'zhoubt';grant all privileges on *.* to ...
- 用Python制作游戏外挂(上)
源地址:http://eyehere.net/2012/python-game-bot-autopy-1/ 悲剧成我这样的人,我知道肯定不止我一个,所以我一点都不悲伤:-( 所以我打开了4399小游戏 ...
- Redis 学习笔记五 经常使用php函数
PHPRedis的安装在这里: http://blog.csdn.net/xundh/article/details/46288277 键值操作 $redis = new Redis(); $redi ...