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 + "]";}}
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();}}
阅读全文
0 0
- XStream java对象和json文件进行序列化和反序列化
- XStream序列化和反序列化xml文件
- .NET进行Json的序列化和反序列化
- newTonSoft.Json进行序列化和反序列化
- DataContractJsonSerializer进行Json的序列化和反序列化
- jackson进行json序列化和反序列化
- CSharp进行JSON的序列化和反序列化
- XStream 通过对象流进行对象与xml的序列化和反序列化
- .NET JSON对象序列化和反序列化
- json.net 对象序列化和反序列化
- java中对象和json格式相互序列化和反序列化的函数
- XStream实现java对象的序列化成xml和反序列化成java对象
- Java利用Jackson进行JSON序列化和反序列化
- Json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- 锁表定位和处理
- Android探索之旅(第二十六篇)给自己来个高逼格编程规范
- SVN不完全指南(介绍)
- ajax提交form
- 《所谓情商高,就是会说话》读后感
- XStream java对象和json文件进行序列化和反序列化
- RS节点健康检查功能脚本
- Attempt to invoke interface method 'org.xutils.common.task.AbsTask org.xutils.common.TaskController
- three.js 04-06 之 MeshLambertMaterial 材质
- 《汇编语言》第二章——寄存器
- Samba 企业应用案例
- 几维安全APP加固产品率先兼容Android 8.0系统
- MySQL数据库安装与配置详解
- MultiByteToWideChar和WideCharToMultiByte用法详解