XStream是一个在我看来比较好的一个第三方包了。因为它在解析时支持注解、这样很是方便,并且xml跟json这两种格式的文件都能进行解析,XStream本属于java的一个第三方包,甚是好用,若是拿它在android开发环境,也是能正常解析,但有点美中不足,因为android开发环境时,XStream不太支持json转对象,只支持对象转json,其他xml与对象的互转都支持。这样的话双解析就有了那么一点瑕疵之处,不过话说回来,没多少需求的数据交互会用json跟xml切来切去的,当只是json转对象时,可以用Gson.jar或Jsonlib.jar或其他的json解析。XStream.jar能支持注解,又支持xml和json双解析就已经很好了。
首先来了解注解的基本使用方法:
注解
@XStreamAlias别名注解
作用目标: 类,字段
@XStreamImplicit 隐式集合
@XStreamImplicit(itemFieldName="part")
作用目标: 集合字段
@XStreamConverter(SingleValueCalendarConverter.class) 注入转换器
作用目标: 对象
@XStreamAsAttribute 转换成属性
作用目标: 字段
@XStreamOmitField 忽略字段
作用目标: 字段
Auto-detect Annotations 自动侦查注解
xstream.autodetectAnnotations(true);
看下面的例子:
Student.java实体类
@XStreamAlias("Student")
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
@XStreamAlias("name")
private String name;
@XStreamAlias("sex")
private String sex;
public Student(){
}
public Student(String name,String sex){
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return getClass().getSimpleName() + ":{"+"name:" + name +",sex:" + sex+"}";
}
}
/**
* xml转bean
* @param xml
* @param clazz
* @return
*/
public static <T> T xmlToBean(String xml,Class<T>... clazz){
T t = null;
XStream xStream = new XStream(new Dom4JDriver()){ //xml转对象需要用到dom4j.jar包
@Override
protected MapperWrapper wrapMapper(MapperWrapper next) {
return new MapperWrapper(next) {
@Override
public boolean shouldSerializeMember(Class definedIn,
String fieldName) {
if(definedIn == Object.class){
try{
return this.realClass(fieldName)!=null;
}catch(Exception e){
return false;
}
}
return super.shouldSerializeMember(definedIn, fieldName);
}
};
}
};
xStream.setMode(XStream.NO_REFERENCES);
xStream.processAnnotations(clazz);
t = (T)xStream.fromXML(xml);
return t;
}
/**
* json转bean
* @param json
* @param clazz
* @return
*/
public static <T> T jsonToBean(String json,Class<T>... clazz){
T t = null;
XStream xStream = new XStream(new JettisonMappedXmlDriver()){ //json转对象时需要用到jettison.jar包
@Override
protected MapperWrapper wrapMapper(MapperWrapper next) {
return new MapperWrapper(next) {
@Override
public boolean shouldSerializeMember(Class definedIn,
String fieldName) {
if(definedIn == Object.class){
try{
return this.realClass(fieldName)!=null;
}catch(Exception e){
return false;
}
}
return super.shouldSerializeMember(definedIn, fieldName);
}
};
}
};
xStream.setMode(XStream.NO_REFERENCES);
xStream.processAnnotations(clazz);
t = (T)xStream.fromXML(json);
return t;
}
main方法测试代码:
public static void main(String[] args) {
String json = "{'Student':{'name':'张三','sex':'男'}}";
Student student1 = jsonToBean(json,Student.class);
System.out.println(student1.toString());
String xml = "<?xml version='1.0' encoding='utf-8'?><Student><name>李四</name><sex>女</sex></Student>";
Student student2 = xmlToBean(xml,Student.class);
System.out.println(student2.toString());
}
打印结果如下:
Student:{name:张三,sex:男}
Student:{name:李四,sex:女}
分享到:
相关推荐
在IT领域,数据交换和存储经常需要在不同的格式之间转换,比如XML和JSON。XML(Extensible Markup Language)是一种结构化数据格式,广泛用于数据交换和配置文件,而JSON(JavaScript Object Notation)则因其简洁性...
Xstream 是一个 Java 库,用于处理 XML 文件的序列化和反序列化,同时也支持将 JavaBean 转换为 JSON 格式。它的核心理念是通过简单的 API 设计,使得 XML 序列化过程变得简洁,无需额外的映射文件或辅助类。 ### 1...
压缩包中的"xmlTest"可能包含了一些示例代码或测试用例,用于演示如何使用xStream进行XML和JSON的转换。这些文件可以作为进一步学习和实践的基础,帮助开发者更好地理解和掌握xStream在实际项目中的应用。在实践中,...
通过运行这些示例,你能够更好地掌握如何在实际项目中运用xStream进行XML和JSON的转换。 总之,xStream是一个强大且易用的工具,它简化了Java对象与XML、JSON之间的转换过程。熟练掌握xStream的使用,不仅可以提高...
《深入解析xStream:从XML到JSON的无缝转换》 在IT行业中,数据交换和存储是不可或缺的部分,而XML和JSON作为两种广泛使用的数据格式,它们各有优势。XML以其严谨的结构和丰富的元数据,适合复杂的文档存储和传输;...
- 解析XML文档,将其转换为DOM(Document Object Model)树。 - 使用如XStream这样的库,将DOM树转换为Java对象模型。 - 使用Json-lib,将Java对象转换为JSON字符串。 反之,JSON到XML的转换则反向进行: - JSON...
在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...
使用JUnit或其他测试框架,编写测试方法,分别测试XML到JSON和JSON到XML的过程,并比较转换前后的数据是否一致。 ```java import org.junit.Test; import static org.junit.Assert.assertEquals; public class ...
首先,XStream是一个开源库,由Johannes Leutenegger创建,它通过简单的API提供XML序列化和反序列化。这个库的特点在于它能够将Java对象直接映射到XML,反之亦然,而无需编写大量的代码。 在开始使用XStream之前,...
另外,`xpp3_min-1.1.4c.jar`是XPP3库的一个版本,它是XStream用来解析XML文档的库,对于理解XStream的工作原理也非常重要。 接下来,为了启用JSON支持,我们需要配置XStream实例。这通常包括创建XStream对象,然后...
首先,我们需要解析XML到一个`org.w3c.dom.Document`对象,然后使用`readValue`方法将其转换为JSON字符串。 - 使用Java的Gson库:Gson库不直接支持XML到JSON的转换,但可以借助第三方库如`...
Jettison是一个实现了JSON和XML之间互转的开源项目,它与Xstream的集成使得JSON处理变得更加便捷。 要实现JSON序列化,首先需要在项目中添加Xstream和Jettison的依赖。在本示例中,`xstream-1.3.1.jar`是Xstream的...
总之,xStream是一个功能强大且灵活的工具,能够方便地处理Java对象与XML和JSON之间的转换,极大地简化了数据序列化和反序列化的任务,尤其是在互联网应用中,对于数据交换和存储具有很高的实用价值。
本文将深入探讨XStream如何在Android环境中解析XML文件,以及其主要特性和优势。 XStream的核心功能是能够将Java对象转换为XML字符串,并反之将XML字符串转换回Java对象。这种转换过程被称为对象XML绑定。XStream的...
03-Java核心类库_XML与JSON(配套工具)。包含fastjson-1.2.70.jar、gson-2.8.6.jar、dom4j-1.6.1.jar、jaxen-1.1-beta-7.jar、xstream-1.3.1.jar。
请注意,这个转换可能不会保留XML的所有结构,因为JSON和XML在表示数据结构方面存在差异。 ### 自定义序列化和反序列化行为 XStream允许自定义序列化和反序列化过程,例如改变字段名、忽略某些字段或处理特殊类型。...
Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将JavaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不再繁索。Xstream也可以将JavaBean序列化成Json或反序列...
这个示例可能包含了一个或多个演示如何使用 XStream 进行对象和 XML/JSON 之间转换的 Java 应用程序。这些示例可能包括创建对象、序列化为 XML/JSON、然后反序列化回对象的完整流程。通过运行提供的 jar 包,你可以...
《XStream 1.4.3:Java Bean到XML与JSON转换的秘密武器》 XStream,这个小巧而强大的库,自版本1.4.3以来,一直是Java开发者处理对象序列化和反序列化的首选工具。它以其简洁的API、高效的性能和对多种格式的支持...
在微信开发过程中,经常会涉及到与服务器的交互,这时就需要用到JSON解析库、XML处理库等工具。以下是对标题和描述中提及的几个关键知识点的详细介绍: 1. JSON解析: JSON (JavaScript Object Notation) 是一种轻...