XStream
目錄
1 XSTREAM框架 1
1.1 XSTREAM的作用 1
1.2 XSTREAM的說明 1
2 XSTREAM的使用 1
2.1 JAVABEAN轉(zhuǎn)換為XML 1
2.2 XML轉(zhuǎn)換為JAVABEAN 1
2.3 JAVABEAN轉(zhuǎn)化為JSON 1
2.4 JSON轉(zhuǎn)化為JAVABEAN 1
1 XStream框架
1.1 XStream的作用
XStream是一個(gè)開源項(xiàng)目,它可以實(shí)現(xiàn)javaBean和xml,json之間進(jìn)行輕松的轉(zhuǎn)換。XStream支持將javaBean轉(zhuǎn)換為xml,同時(shí)也支持將xml轉(zhuǎn)換為javaBean,當(dāng)然也可以將javaBean轉(zhuǎn)換問json,也可以將json轉(zhuǎn)換問javaBean。
1.2 XStream的說明
官網(wǎng):http://xstream.codehaus.org/index.html
下載地址:http://xstream.codehaus.org/download.html
官方使用示例:http://xstream.codehaus.org/tutorial.html
打開下載地址,XStream提供了src(源碼)和bin(二進(jìn)制)包下載,如果想了解學(xué)習(xí)源代碼可以下載src,如果只想使用就下載bin。下面簡紹XStream的使用。
2 XStream的使用
下載XSteam的bin包,在java項(xiàng)目中加入下面包。
創(chuàng)建java項(xiàng)目,創(chuàng)建轉(zhuǎn)換模型User和Bbirthday類,創(chuàng)建一個(gè)TestUser來作為測試轉(zhuǎn)換類。
XStream的toXml()方法實(shí)現(xiàn)了javaBean到xml,json的轉(zhuǎn)化,fromXml()方法實(shí)現(xiàn)了xml,json到j(luò)avaBean的轉(zhuǎn)換。
User類
Birthday類
2.1 JavaBean轉(zhuǎn)化為XML
TestUser類
輸出結(jié)果:
如果使用
創(chuàng)建XSteam對象那么輸出的結(jié)果同上。
如果使用
來創(chuàng)建XStream對象,輸出的結(jié)果:
2.2 XML轉(zhuǎn)化為JavaBean
在TestUser的main方法調(diào)用test2方法
輸出結(jié)果
2.3 JavaBean轉(zhuǎn)化為Json
輸出結(jié)果
輸出結(jié)果
如果使用
創(chuàng)建XStream對象,那么java對象轉(zhuǎn)換成的json會去除根節(jié)點(diǎn)。
輸出結(jié)果
2.4 Json轉(zhuǎn)化為JavaBean
輸出結(jié)果
目錄
1 XSTREAM框架 1
1.1 XSTREAM的作用 1
1.2 XSTREAM的說明 1
2 XSTREAM的使用 1
2.1 JAVABEAN轉(zhuǎn)換為XML 1
2.2 XML轉(zhuǎn)換為JAVABEAN 1
2.3 JAVABEAN轉(zhuǎn)化為JSON 1
2.4 JSON轉(zhuǎn)化為JAVABEAN 1
1 XStream框架
1.1 XStream的作用
XStream是一個(gè)開源項(xiàng)目,它可以實(shí)現(xiàn)javaBean和xml,json之間進(jìn)行輕松的轉(zhuǎn)換。XStream支持將javaBean轉(zhuǎn)換為xml,同時(shí)也支持將xml轉(zhuǎn)換為javaBean,當(dāng)然也可以將javaBean轉(zhuǎn)換問json,也可以將json轉(zhuǎn)換問javaBean。
1.2 XStream的說明
官網(wǎng):http://xstream.codehaus.org/index.html
下載地址:http://xstream.codehaus.org/download.html
官方使用示例:http://xstream.codehaus.org/tutorial.html
打開下載地址,XStream提供了src(源碼)和bin(二進(jìn)制)包下載,如果想了解學(xué)習(xí)源代碼可以下載src,如果只想使用就下載bin。下面簡紹XStream的使用。
2 XStream的使用
下載XSteam的bin包,在java項(xiàng)目中加入下面包。
創(chuàng)建java項(xiàng)目,創(chuàng)建轉(zhuǎn)換模型User和Bbirthday類,創(chuàng)建一個(gè)TestUser來作為測試轉(zhuǎn)換類。
XStream的toXml()方法實(shí)現(xiàn)了javaBean到xml,json的轉(zhuǎn)化,fromXml()方法實(shí)現(xiàn)了xml,json到j(luò)avaBean的轉(zhuǎn)換。
User類
package com.model;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
* @author xmong
*/
//annotation注解別名,即xml中的user節(jié)點(diǎn)名稱
@XStreamAlias("user")
public class User {
//姓名
public String name;
//生日
public Birthday birthday;
public User(){
super();
}
public User(String name, Birthday birthday) {
this.name = name;
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Birthday getBirthday() {
return birthday;
}
public void setBirthday(Birthday birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "{ name:"+this.name+"; birthday:"+this.birthday+"}";
}
}
Birthday類
package com.model;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
//annotation注解別名,即xml中的user節(jié)點(diǎn)名稱
@XStreamAlias("birthday")
public class Birthday {
//annotation注解屬性,即xml中節(jié)點(diǎn)屬性
@XStreamAsAttribute
int year;
@XStreamAsAttribute
int month;
int day;
public Birthday(){
super();
}
public Birthday(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
@Override
public String toString() {
return "{year:"+this.year+"; month"+this.month+"; day"+this.day+"}";
}
}
2.1 JavaBean轉(zhuǎn)化為XML
TestUser類
package com.model;
import com.thoughtworks.xstream.XStream;
/**
* @author xmong
*/
public class TestUser {
/**
* javaBean轉(zhuǎn)換為xml
*/
public void test1(){
//創(chuàng)建user對象
User user = new User();
user.setName("xmong");
user.setBirthday(new Birthday(1990, 10, 20));
//創(chuàng)建xstream
XStream xstream = new XStream();
//XStream xstream = new XStream(new DomDriver());
//XStream xstream = new XStream(new StaxDriver());
//加載annotation注解
xstream.processAnnotations(User.class);
System.out.println(xstream.toXML(user));
}
public static void main(String[] args) {
TestUser tu = new TestUser();
tu.test1();
}
}
輸出結(jié)果:
<user>
<name>xmong</name>
<birthday year="1990" month="10">
<day>20</day>
</birthday>
</user>
如果使用
XStream xstream = new XStream(new DomDriver())
創(chuàng)建XSteam對象那么輸出的結(jié)果同上。
如果使用
XStream xstream = new XStream(new StaxDriver())
來創(chuàng)建XStream對象,輸出的結(jié)果:
<?xml version="1.0" ?><user><name>xmong</name><birthday year="1990" month="10"><day>20</day></birthday></user>
2.2 XML轉(zhuǎn)化為JavaBean
在TestUser的main方法調(diào)用test2方法
/**
* XML轉(zhuǎn)換為JavaBean
*/
public void test2(){
//創(chuàng)建user對象
User user = new User();
user.setName("xmong");
user.setBirthday(new Birthday(1990, 10, 20));
//創(chuàng)建xstream
XStream xstream = new XStream();
//加載annotation注解
xstream.processAnnotations(User.class);
String xml = xstream.toXML(user);
System.out.println(xml);
System.out.println("===================");
System.out.println((User)xstream.fromXML(xml));
}
public static void main(String[] args) {
TestUser tu = new TestUser();
tu.test2();
}
輸出結(jié)果
<user>
<name>xmong</name>
<birthday year="1990" month="10">
<day>20</day>
</birthday>
</user>
===================
{ name:xmong; birthday:{year:1990; month10; day20}}
2.3 JavaBean轉(zhuǎn)化為Json
/**
* javaBean轉(zhuǎn)換為json
*/
public void test3(){
//創(chuàng)建user對象
User user = new User();
user.setName("xmong");
user.setBirthday(new Birthday(1990, 10, 20));
//創(chuàng)建xstream,傳入轉(zhuǎn)換驅(qū)動類JettisonMappedXmlDriver
XStream xstream = new XStream( new JettisonMappedXmlDriver());
//設(shè)置user類的json別名
xstream.alias("user", User.class);
System.out.println(xstream.toXML(user));
}
public static void main(String[] args) {
TestUser tu = new TestUser();
tu.test3();
}
輸出結(jié)果
{"user":{"name":"xmong","birthday":{"year":1990,"month":10,"day":20}}}
/**
* javaBean轉(zhuǎn)換為json
*/
public void test4(){
//創(chuàng)建user對象
User user = new User();
user.setName("xmong");
user.setBirthday(new Birthday(1990, 10, 20));
//創(chuàng)建xstream,傳入轉(zhuǎn)換驅(qū)動類JsonHierarchicalStreamDriver
XStream xstream = new XStream( new JsonHierarchicalStreamDriver());
/*//去除根節(jié)點(diǎn)
XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
public HierarchicalStreamWriter createWriter(Writer writer) {
return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
}
});
*/
//設(shè)置user類的json別名
xstream.alias("user", User.class);
System.out.println(xstream.toXML(user));
}
public static void main(String[] args) {
TestUser tu = new TestUser();
tu.test4();
}
輸出結(jié)果
{"user": {
"name": "xmong",
"birthday": {
"year": 1990,
"month": 10,
"day": 20
}
}}
如果使用
XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
public HierarchicalStreamWriter createWriter(Writer writer) {
return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
}
});
創(chuàng)建XStream對象,那么java對象轉(zhuǎn)換成的json會去除根節(jié)點(diǎn)。
輸出結(jié)果
{
"name": "xmong",
"birthday": {
"year": 1990,
"month": 10,
"day": 20
}
}
2.4 Json轉(zhuǎn)化為JavaBean
/**
* json轉(zhuǎn)換為javaBean
*/
public void test5(){
//創(chuàng)建user對象
User user = new User();
user.setName("xmong");
user.setBirthday(new Birthday(1990, 10, 20));
//創(chuàng)建xstream,傳入轉(zhuǎn)換驅(qū)動類JettisonMappedXmlDriver
XStream xstream = new XStream( new JettisonMappedXmlDriver());
//設(shè)置user類的json別名
xstream.alias("user", User.class);
String json = xstream.toXML(user);
System.out.println(json);
System.out.println("================");
System.out.println(xstream.fromXML(json));
}
public static void main(String[] args) {
TestUser tu = new TestUser();
tu.test5();
}
輸出結(jié)果
{"user":{"name":"xmong","birthday":{"year":1990,"month":10,"day":20}}}
================
{ name:xmong; birthday:{year:1990; month10; day20}}
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

