- 浏览: 829380 次
- 性别:
- 来自: 哈尔滨
文章分类
最新评论
-
doloveme:
$sudo cp MONACO_Linux.ttf /usr/ ...
terminator 的配置 -
腾讯rep:
lowser
RSA加密算法c++简单实现 -
csuhanyong:
好YD啊,好YD
一图流:机械键盘各轴区别 -
doloveme:
1。其中:extman ,extmail下载http://ww ...
Ubuntu下安装postfix+extmail邮件服务器 -
doloveme:
repo sync出现“fatal: '../platform ...
Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA
XStream是thoughtworks开发的开源产品,采用的是xpp来进行xml和对象之间的转换。它不需要schema或其他的mapping文件就可以进行java对象和xml文件之间的转换,API调用起来非常方便,并且扩展功能强大。
JSON是目前比较流行的轻量级的对象数据转换方式,常常用在ajax和web service领域。目前大部分语言都有JSON的实现。Java领域有json lib,还有xstream json(jettison)。
主要是对3者 (xstream, json lib, xstream json) 转换的数据长度,还有转换的效率做个比较。
转换的java类为:
package com.ldd600.ws;
public class Employee {
private String name;
private int age;
private Address address;
private double salary;
private boolean isActive;
private char sexy;
public String getName() {
return name;
}
public void setName(String naem) {
this.name = naem;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public boolean isActive() {
return isActive;
}
public void setActive(boolean isActive) {
this.isActive = isActive;
}
public char getSexy() {
return sexy;
}
public void setSexy(char sexy) {
this.sexy = sexy;
}
}
package com.ldd600.ws; public class Address { private String street; private String country; private String city; private String doorNum; // private Employee employee; private String empName; public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getDoorNum() { return doorNum; } public void setDoorNum(String doorNum) { this.doorNum = doorNum; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } // public Employee getEmployee() { // return employee; // } // // public void setEmployee(Employee employee) { // this.employee = employee; // } }
数据格式和长度比较:
方法 长度 格式
Xstream 328
<com.ldd600.ws.Employee>
<name>gavin</name>
<age>0</age>
<address>
<street>zhaojiabang</street>
<country>china</country>
<city>shanghai</city>
<doorNum>789</doorNum>
<empName>gavin</empName>
</address>
<salary>300000.0</salary>
<isActive>true</isActive>
<sexy>m</sexy>
</com.ldd600.ws.Employee>
Json lib 170 "789","empName":"gavin","street":"zhaojiabang"},"age":0,"name":"gavin","salary":300000,"sexy":"m"}
XStream json 183 {"employee":{"name":"gavin","age":0,"address":{"street":"zhaojiabang","country":"china","city":"shanghai","doorNum":789,"empName":"gavin"},"salary":300000,"isActive":true,"sexy":"m"}}
时间(转换次数1000000):
方式 | 时间(ms) |
Json lib | 185638 |
XStream xml | 247863 |
XStream json | 395624 |
Xstream xml方式比json lib慢:62s
Xstream json方式比xstream xml慢:147s
如何选择:
JSON:
只是纯粹数据转换的方式,如果不需要命名空间,验证,XSLT等xml的功能,可以考虑使用。但是JSON规范还存在一些不支持的情况,比如当Address类中也有Employee类的引用时,转换就会抛出异常。要说明的是jettison应该是xml和json之间转换的工具,xstream利用jettison完成java对象到xml再到json的转换,这样性能就更糟糕了。而且xstream json有很多不满足json规范的地方,比如一个空string在json规范中会转成null,而在xstream json中会转换成””, 所以在使用xstream json消费其他json工具生产的json字符串时就会出现问题。但Json lib提供了JSonConfig类解决了这个问题。如果进行xml和json之间的转换可以考虑使用jettison。
Xstream不需要关心xml schema验证,它比json好的一个地方是它可以自动处理引用的表达方式,比如多个变量重复引用同一个对象,循环引用等,如;
<employee reference="../.."/>。
它的API使用太方便了,
XStream xstream = new XStream();
String xml = xstream.toXML(employee);
Employee xsEmployee = (Employee) xstream.fromXML(xml);
Xstream自定义和扩展功能也很强大,如用户可以通过converter来实现自己类型的转换逻辑。
现在我们有个项目需要设计一个通用的web service agent,根据客户端提供的类名,方法名,参数等调用本地的方法。这样可能需要一种统一的数据格式和处理方式,考虑传的参数可能出现互相引用的情况,还有可读性,将来的扩展性等问题决定默认方式还是使用xstream来转换。
发表评论
-
iOS技术支持
2020-03-06 17:08 321iOS技术支持有问题的可以留言。邮箱地址:huaonline ... -
intellij 打开工程在每个java文件上 有个红色的无效符
2015-07-24 13:52 1757说明该类不是可编译文件。在project Structure中 ... -
springmvc 链接数据库错误
2015-07-09 15:00 1043Caused by: org.xml.sax.SAXPar ... -
ubuntu永久修改主机名
2015-05-05 14:10 817ubuntu永久修改主机名 ... -
ubuntu mysql 配置 远程登陆
2015-03-11 22:37 8041.ubuntu安装 sudo apt-get i ... -
GIT查看、删除、重命名远程分支和TAG
2014-03-04 09:38 6002013-01-09:加入删除远程tag的内容2013-11 ... -
PowerDesigner15在生成SQL時報錯Generation aborted due to errors detected during the ver
2012-08-23 16:32 13291.用PowerDesigner15建模,在Data ... -
NoSQL数据库笔谈<转载>
2011-12-20 17:43 1563<p> </p> <div st ... -
Java性能分析比较:远程调用方法
2011-12-20 09:14 961现在,Java远程调用方法很多,各种方法的优缺点网 ... -
rpc rmi区别
2011-12-19 13:30 13701. RMI和RPC之间最主要的区别在于方法是如何别调用的。 ... -
深入探讨SOAP、RPC和RMI
2011-12-19 13:28 915在 Brett McLaughlin 关于Soapbox ... -
Java RMI与RPC,JMS的比较
2011-12-19 13:28 910远程对象方法调用并不是新概念,远程过程调用 (RPC) ... -
右键打开UE
2011-12-15 13:39 954@echo off echo Windows Regi ... -
xstream
2011-09-07 15:28 1042xstream: XStream xst ... -
在Spring中使用XFire构建Web Service应用
2011-08-31 16:25 1120概述 XFire是与Axis 2并列的新一代Web Servi ... -
XFire构建web services客户端的五种方式
2011-08-31 16:15 999本文主要源于先前看到的一篇文章,为了自己以后查看方便也就转 ... -
XFire 最新生火指南(上)
2011-08-31 15:51 914基于发布在JavaEye的敬畏心情,本文又修改了一遍,与前 ... -
XFire 最新生火指南(下)
2011-08-31 15:49 10811. JSR181 JSR181式通过annotated ... -
xfire生成webservice客户端与服务注意事项
2011-08-30 17:32 15861.从Bean生成ws,要注意如果用了XmlB ... -
一天工作总结4.26
2011-04-26 17:34 957我擦,今天搞了许多! 首选弄了个struts的框架,当 ...
相关推荐
Xstream和Json是两种广泛使用的工具,分别用于Java对象到XML和JSON格式的转换。本文将深入探讨Xstream库如何与Json进行交互,以及在实际应用中的使用。 Xstream是一个Java库,它提供了简单、高效的方式来序列化和反...
本篇文章将深入探讨xStream如何实现Java对象与XML和JSON的相互转换,并提供详细的代码示例。 ### 1. xStream的安装与引入 首先,你需要在项目中添加xStream的依赖。如果你使用的是Maven,可以在pom.xml文件中添加...
Jettison是一个实现了JSON和XML之间互转的开源项目,它与Xstream的集成使得JSON处理变得更加便捷。 要实现JSON序列化,首先需要在项目中添加Xstream和Jettison的依赖。在本示例中,`xstream-1.3.1.jar`是Xstream的...
XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不需要配置映射关系,对象和字段将映射为同名XML元素。但是当对象和字段名与XML中的元素名不同时,...
在IT领域,数据交换和存储经常需要在不同的格式之间转换,比如XML和JSON。XML(Extensible Markup Language)是一种结构化数据格式,广泛用于数据交换和配置文件,而JSON(JavaScript Object Notation)则因其简洁性...
压缩包中的"xmlTest"可能包含了一些示例代码或测试用例,用于演示如何使用xStream进行XML和JSON的转换。这些文件可以作为进一步学习和实践的基础,帮助开发者更好地理解和掌握xStream在实际项目中的应用。在实践中,...
只需一个简单的配置,就可以让XStream在XML和JSON之间切换: ```java xstream.processAnnotations(Person.class); // 注解Person类 xstream.alias("person", Person.class); // 给类起别名 // XML到JSON String ...
xStream完美转换XML、JSON,包括XML转换成对象,以及对象转换成XML,以及对象转换成JSON,以及注意事项
总之,"json XStream"涉及的主题是使用XStream库配合Jettison来实现Java对象与JSON格式之间的序列化和反序列化。通过理解这两个库的功能和如何整合它们,开发者可以有效地在XML和JSON之间进行数据交换,满足跨平台和...
Xstream 是一个 Java 库,用于处理 XML 文件的序列化和反序列化,同时也支持将 JavaBean 转换为 JSON 格式。它的核心理念是通过简单的 API 设计,使得 XML 序列化过程变得简洁,无需额外的映射文件或辅助类。 ### 1...
通过运行这些示例,你能够更好地掌握如何在实际项目中运用xStream进行XML和JSON的转换。 总之,xStream是一个强大且易用的工具,它简化了Java对象与XML、JSON之间的转换过程。熟练掌握xStream的使用,不仅可以提高...
在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...
请注意,这个转换可能不会保留XML的所有结构,因为JSON和XML在表示数据结构方面存在差异。 ### 自定义序列化和反序列化行为 XStream允许自定义序列化和反序列化过程,例如改变字段名、忽略某些字段或处理特殊类型。...
Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发。 0x01 漏洞描述 Xstream上次对CVE-2020-26217处理并不彻底,虽然通过黑名单...
7. **支持JSON**:除了XML,XStream还支持JSON格式的数据交换,使得与JavaScript和Web服务的交互更为便捷。 在实际应用中,XStream广泛应用于数据持久化、网络传输、配置文件存储等场景。例如,在Web服务中,...
在本文中,我们将深入探讨xStream的功能、用法以及其在处理XML和JSON时的优势。 1. **xStream的基本概念** - **序列化**:将Java对象转化为XML字符串的过程。 - **反序列化**:将XML字符串转化为对应的Java对象。...
* XStream 可以捕获数据的各种格式,包括 SQL、XML 和 JSON 等。 二、事件处理 * Oracle Database XStream 提供了一个事件处理引擎,能够实时处理捕获的数据变化。 * 事件处理引擎可以根据业务规则和逻辑对捕获的...
本文将深入探讨xStream 1.31版本的功能、使用方法以及其在处理XML和JSON数据时的优势。 首先,让我们理解xStream的核心概念。xStream基于Java反射机制,通过使用自定义的转换器(converters),可以将任何复杂的...
//extjs的jsp标签库及使用实例 exttld1.0.zip exttldbasic.zip exttld1.0-beta.zip exttldexamples.zip //json的转换器及帮助 ezmorph-1.0.6.jar ezmorph-1.0.6-javadoc.jar ...xstream-1.3.1.jar