其实XStream和JAXB在一些观念上是很相似的
但是JAXB作为Java EE的一个规范 是非常正式的 且和其他很多规范有联系 是一种标准的实现
这边简单说说实现方式(博客里有文介绍使用):
1.一个实体类,使用@XmlRootElement表示一下类(最简单的)
2.建立一个ObjectFactory用来产生这个实体类
3.使用JAXBContext 然后产生Marshaller(对象-->xml)或者UnMarshaller(xml-->对象)
而XStream使用起来更为简单
1.首先从XStream官网下载XStream
http://xstream.codehaus.org/download.html
2.下载后解压 将lib下的jar添加入项目就可以了
如下:
然后就可以编写代码了
为了方便 直接使用XStream的annotation:
3.实体类 Person:
package org.cc.vo; import java.util.List; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamImplicit; import com.thoughtworks.xstream.annotations.XStreamOmitField; @XStreamAlias("Person") public class Person { @XStreamAlias("name") @XStreamAsAttribute private String name; @XStreamAlias("age") private int age; @XStreamAlias("sex") private boolean sex; @XStreamImplicit(itemFieldName="favor") private List<String> favor; @XStreamOmitField private int tempid; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean isSex() { return sex; } public void setSex(boolean sex) { this.sex = sex; } public List<String> getFavor() { return favor; } public void setFavor(List<String> favor) { this.favor = favor; } public int getTempid() { return tempid; } public void setTempid(int tempid) { this.tempid = tempid; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", favor=" + favor + ", tempid=" + tempid + "]"; } }
@XStreamAlias(value)是别名 可以用在类名和属性名上修改显示的xml中的标签
@XStreamAsAttribute 把属性作为xml中的属性 而不是子元素
@XStreamImplicit(itemFieldName="favor") 还有一个keyFieldName的属性 这个是用来改写List和Map的显示 的
@XStreamOmitField 此标记的属性不会序列化
4.接下去只有一步,没有JAXB的建立ObjectFactory那一部,实现起来非常简洁直观:
package org.cc.vo; import java.util.ArrayList; import java.util.List; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; public class Main { public static void main(String[] args) { XStream x=new XStream(); // XStream x = new XStream(new JettisonMappedXmlDriver()); x.processAnnotations(Person.class); Person p=new Person(); p.setAge(30); List<String> fa=new ArrayList<String>(); fa.add("游戏"); fa.add("上网"); p.setFavor(fa); p.setName("cc"); String info=x.toXML(p); System.out.println(info); Person p2=(Person)x.fromXML(info); System.out.println(p2); } }
输出:
<Person name="cc"> <age>30</age> <sex>false</sex> <favor>游戏</favor> <favor>上网</favor> </Person> Person [name=cc, age=30, sex=false, favor=[游戏, 上网], tempid=0]
注意了以上代码注释掉的那块打开 并把没有参数的构造方法的XStream那一段注释掉产生的就是JSON(换了一个引擎)
产生内容如下:
{"Person":{"@name":"cc","age":30,"sex":false,"favor":["游戏","上网"]}} Person [name=cc, age=30, sex=false, favor=[游戏, 上网], tempid=0]
相关推荐
总的来说,xStream是Java开发中处理XML和JSON的强大工具,它提供了简单易用的API来实现对象与这两种数据格式之间的转换。通过理解和掌握xStream的使用,开发者可以更高效地处理数据序列化和反序列化任务。
XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不需要配置映射关系,对象和字段将映射为同名XML元素。但是当对象和字段名与XML中的元素名不同时,...
XStream的核心功能是能够将Java对象和XML之间的映射自动化,极大地简化了序列化和反序列化的过程。你可以通过Maven或Gradle在项目中添加XStream依赖。例如,在Maven的pom.xml文件中,你可以添加如下依赖: ```xml ...
xStream是一个强大的库,它提供了一种简单的方式来序列化和反序列化Java对象到XML,反之亦然。在这个场景中,它同样能够处理JSON转换,虽然JSON不是其原生支持的格式,但通过一些额外的配置和库,如json-simple,...
XStream是一个开源库,它为Java对象提供了简单且直观的XML序列化和反序列化的解决方案。它不仅能够将Java对象转换成XML,反之亦然,还能支持JSON格式的转换。这个强大的工具在处理数据交换、持久化或配置文件时非常...
Xstream 是一个 Java 库,用于处理 XML 文件的序列化和反序列化,同时也支持将 JavaBean 转换为 JSON 格式。它的核心理念是通过简单的 API 设计,使得 XML 序列化过程变得简洁,无需额外的映射文件或辅助类。 ### 1...
3. **xstream-1.3.1.jar**:XStream是另一个Java库,它提供了一种简单的方式来序列化和反序列化Java对象为XML。在XML到JSON转换过程中,XStream可能首先用于将XML数据转换为Java对象,然后这些对象再由Json-lib处理...
xStream由Johannes Brodskie创建,它通过对象到XML/JSON的直接映射,实现了简单且直观的数据序列化。这种序列化方式省去了手动编写解析和序列化代码的繁琐过程,大大提高了开发效率。在本文中,我们将深入探讨...
Xstream是一个Java库,它提供了简单、高效的方式来序列化和反序列化Java对象为XML,反之亦然。它的主要优点在于其简洁的API和可读性强的XML输出。在我们的示例"Xstream 类与Json之间转换"中,我们可能会看到如何利用...
接下来,使用xStream进行XML序列化和反序列化非常简单。初始化xStream实例后,通过`toXML()`和`fromXML()`方法即可完成转换。 ```java XStream xstream = new XStream(); String xml = xStream.toXML(employee); ...
xstream-1.4.2.jar,xpp3_min-1.1.4.jar,xmlpull-1.1.3.1.jar 包括 //XML --> JavaBean, //XML --> JavaBean //JavaBean --> JSON,//JSON--> JavaBean
在Java中,可以使用各种库来实现XML到JSON的转换,其中XStream是一个流行的库,它提供了强大的XML序列化和反序列化功能。XStream虽然主要设计用来XML操作,但也可以通过添加额外的转换器来处理JSON。首先,你需要...
总之,"json XStream"涉及的主题是使用XStream库配合Jettison来实现Java对象与JSON格式之间的序列化和反序列化。通过理解这两个库的功能和如何整合它们,开发者可以有效地在XML和JSON之间进行数据交换,满足跨平台和...
- Jackson库的`ObjectMapper`类可以将Java对象直接序列化为JSON字符串,或者反序列化JSON字符串为Java对象。 - Gson库同样提供了类似的`toJson`和`fromJson`方法,方便地在Java对象和JSON字符串之间转换。 4. ...
Android并没有内置的XML序列化库,但可以借助第三方库如XStream或Jackson,或者手动实现序列化。手动实现通常涉及创建`toString()`方法,将对象属性转化为XML格式的字符串。 2. **Gson**: 虽然Gson主要用于JSON序列...
Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将JavaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不再繁索。Xstream也可以将JavaBean序列化成Json或反序列...
总之,Java对象的序列化和反序列化是开发中常见的需求,而Fastjson和XStream都是强大且高效的工具,可以方便地处理JSON和XML格式的数据。通过这两个库,开发者可以轻松地在Java对象和这些数据格式之间进行转换,满足...
6. **JSON 支持**:除了 XML,XStream 也支持 JSON 格式的序列化和反序列化,使其成为一个多用途的序列化工具。 **使用 XStream-1.3.1** 在给定的文件 `xstream-1.3.1.jar` 中,包含了 XStream 的 1.3.1 版本。这...
总之,xStream是一个功能强大且灵活的工具,能够方便地处理Java对象与XML和JSON之间的转换,极大地简化了数据序列化和反序列化的任务,尤其是在互联网应用中,对于数据交换和存储具有很高的实用价值。
Xstream 是一个强大的Java库,主要用于对象到XML的序列化和反序列化,它使得XML数据绑定变得简单易行。然而,除了XML之外,Xstream还可以处理JSON数据,这是一个相对较少人了解的功能。JSON(JavaScript Object ...