XStream 序列化與反序列化
一直以來寫代碼的時候都是不斷地複制、粘貼。代碼寫多了,時間長了,不看代碼根本就不知道代碼的具體實作的方式是什麼,現在對以前寫過的代碼進行一個簡單的整理。
- xstream的jar檔案下載下傳路徑
- 對象的建立
- 具體的Xstream的實作方式
- 具體事例說明
xstream的jar檔案下載下傳路徑
- 雲盤:
- 官網:
對象的建立
@XStreamAlias("Body")
public class Login {
@XStreamAlias("Request")
public Request request = null;
@XStreamAlias("Response")
public Response response = null;
public static class Request implements IDto {
@XStreamAlias("Code")
@XStreamAsAttribute
public String orgCode;
@XStreamAlias("Type")
@XStreamAsAttribute
public String operType;
@XStreamAlias("UserN")
public String userN = "";
@XStreamAlias("PassWord")
public String password = "";
}
public static class Response implements IDto {
@XStreamAlias("ErrMsg")
@XStreamAsAttribute
public String errMsg = "";
@XStreamAlias("UserID")
public String userID = "";
@XStreamAlias("PassWord")
public String passWord = "";
@XStreamAlias("UserName")
public String userName = "";
@XStreamAlias("RoleCD")
public String roleCD = "";
@XStreamAlias("RoleName")
public String roleName = "";
@XStreamAlias("UserType")
public String userType = "";
@XStreamAlias("Station")
@XStreamConverter(BeanCDConverter.class)
public BeanCD station = null;
@XStreamAlias("Country")
@XStreamConverter(BeanCDConverter.class)
public BeanCD country = null;
@XStreamAlias("Province")
@XStreamConverter(BeanIDConverter.class)
public BeanID province = null;
@XStreamAlias("City")
@XStreamConverter(BeanIDConverter.class)
public BeanID city = null;
@XStreamAlias("District")
@XStreamConverter(BeanIDConverter.class)
public BeanID district = null;
@XStreamAlias("Street")
@XStreamConverter(BeanIDConverter.class)
public BeanID street = null;
@XStreamAlias("Community")
@XStreamConverter(BeanCDConverter.class)
public BeanCD community = null;
@XStreamAlias("Lane")
public String lane = "";
@XStreamAlias("Other")
public String other = "";
@XStreamAlias("CommunityJurisdiction")
@XStreamConverter(BeanCDConverter.class)
public BeanCD communityJuris = null;
@XStreamAlias("Zones")
public Zones Zone;
public static class Zones{
@XStreamImplicit(itemFieldName="Zone" )
public List<ZoneID> zoneIDs;
}
}
}
具體實作事例
在XmlSeriaUtil類中的兩個對XStream的調用方法
/**
*對象轉換成字元串
**/
public static String beanToXml(Object obj) {
String xml = null;
try {
XStream xstream = new XStream();
xstream.processAnnotations(obj.getClass());
xml = xstream.toXML(obj);
} catch (Exception e) {
e.printStackTrace();
}
return xml;
}
/**
*字元串轉換成相應的類
**/
public static <T> T xmlToBean(String xml, Class<T> clazz) {
try {
XStream xstream = new XStream(new DomDriver());
xstream.processAnnotations(clazz);
xstream.ignoreUnknownElements();
T obj = (T) xstream.fromXML(xml);
return obj;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
具體調用方法
XmlSeriaUtil.xmlToBean(str, Login.class);
Login login = new Login();
String str = XmlSeriaUtil.beanToXml(login);