天天看點

XStream 序列化與反序列化XStream 序列化與反序列化

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);