XStream java对象和json文件进行序列化和反序列化

来源:互联网 发布:出租车发票打印机软件 编辑:程序博客网 时间:2024/05/24 06:07

XStream  不仅可以使用Java对象和XML文件进行互相转换,还可以使用Java对象和json文件进行互相转换。

引入依赖:

<!-- XStream -->         <dependency>            <groupId>com.thoughtworks.xstream</groupId>            <artifactId>xstream</artifactId>            <version>1.4.9</version>        </dependency>        <!-- XStream 对JSON处理的支持-->         <dependency>            <groupId>org.codehaus.jettison</groupId>            <artifactId>jettison</artifactId>            <version>1.3.2</version>        </dependency>


实体类:

package cn.framework.t3;import java.util.ArrayList;import java.util.Date;import java.util.List;public class User {private int userId;private String userName;private String pwd;private List<UserLog> logs=new ArrayList<UserLog>();private Date lastVisted;public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public List getLogs() {return logs;}public void setLogs(List logs) {this.logs = logs;}public Date getLastVisted() {return lastVisted;}public void setLastVisted(Date lastVisted) {this.lastVisted = lastVisted;}@Overridepublic String toString() {return "User [userId=" + userId + ", userName=" + userName + ", pwd="+ pwd + ", logs=" + logs + ", lastVisted=" + lastVisted + "]";}}

package cn.framework.t3;public class UserLog {private int logId;private String ip;public int getLogId() {return logId;}public void setLogId(int logId) {this.logId = logId;}public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}@Overridepublic String toString() {return "UserLog [logId=" + logId + ", ip=" + ip + "]";}}


XStreamUtils


package cn.framework.t4;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.nio.charset.Charset;import org.apache.log4j.Logger;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;public class XStreamUtils {private static final Logger logger=Logger.getLogger("cn.framework.t1.XStreamUtils");private static XStream xstream;static{logger.info("init xstream ...");//创建基于流非Dom方式的解析器来提供性能xstream=new XStream(new JettisonMappedXmlDriver());xstream.setMode(XStream.NO_REFERENCES);xstream.alias("user", User.class);xstream.alias("userLog", UserLog.class);}public static void toJson(User user) throws FileNotFoundException{FileOutputStream fos = new FileOutputStream("e:/out/xstream_user.json");OutputStreamWriter writer = new OutputStreamWriter(fos,Charset.forName("UTF-8"));xstream.toXML(user, writer);}public static void toObj() throws FileNotFoundException{File file = new File("e:/out/xstream_user.json");User user = (User) xstream.fromXML(file);System.out.println(user);}}


测试类:

package cn.framework.t4;import java.io.File;import java.io.IOException;import java.text.ParseException;import java.util.Date;import java.util.List;import com.thoughtworks.xstream.persistence.FilePersistenceStrategy;import com.thoughtworks.xstream.persistence.PersistenceStrategy;import com.thoughtworks.xstream.persistence.XmlArrayList;public class Test {public static void main(String[] args) throws ParseException, IOException, ClassNotFoundException {//User user = new User();//user.setLastVisted(new Date());//user.setPwd("123456");//user.setUserId(1);//user.setUserName("aaa");//////UserLog userLog = new UserLog();//userLog.setIp("127.0.0.1");//userLog.setLogId(1);//user.getLogs().add(userLog);////XStreamUtils.toJson(user);XStreamUtils.toObj();}}



原创粉丝点击