序列化反序列化--Xstream的使用
之前讲了fastjson的使用–将JavaBean与json对象之间互相转换。
该篇文章,教大家使用Xstream来实现XMl与JavaBean的转换。
第一步:
通过maven引入XStream的jar包。
<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
<dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.3.1</version>
</dependency>
第二步:
准备一个需要序列化和反序列化的类:
注:
1.该类必须有无参的构造函数,否则报错:Cannot construct com.claire.jing.test0811.Student as it does not have a no-args constructor
2.该类 implements Serializable ,这个接口仅仅是标识作用,写上只是标识该类是可以被序列化和反序列化的。
public class Student implements Serializable {private int id;private String name;private String school;public Student() {// TODO Auto-generated constructor stub}public Student(int id, String name, String school) {super();this.id = id;this.name = name;this.school = school;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSchool() {return school;}public void setSchool(String school) {this.school = school;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", school=" + school + "]";}
}
第三步:使用XStream来实现该类的序列化和反序列
public class SerializeXml {public static void main(String[] args) {serializeToXml(); System.out.println("**************************************");deserialize();}public static void serializeToXml() {FileOutputStream write = null;Student stu1 = new Student(10003, "claire", "hh");Student stu2 = new Student(10004, "leafly", "hh");Student[] students = {stu1,stu2};XStream xstream = new XStream();try { //将文流怼到文件上write = new FileOutputStream("F:/myObjtoXml.txt"); //将学生对象序列化成Xml并通过流写入到文件中xstream.toXML(students, write);} catch (FileNotFoundException e) {e.printStackTrace();}//将序列化结果输出System.out.println(xstream.toXML(students));}public static void deserialize() {FileInputStream reader;XStream xstream = new XStream();Student[] students=null;try {reader = new FileInputStream("F:/myObjtoXml.txt"); //将Xml文件反序列化为Student对象students=(Student[])xstream.fromXML(reader);if (students != null) {for (Student student : students) {System.out.println(student);}}} catch (FileNotFoundException e) {e.printStackTrace();}}
}
上面程序的输出结果为:
<com.claire.jing.test0811.Student-array>
<com.claire.jing.test0811.Student>
<id>10003</id>
<name>claire</name>
<school>hh</school>
</com.claire.jing.test0811.Student>
<com.claire.jing.test0811.Student>
<id>10004</id>
<name>leafly</name>
<school>hh</school>
</com.claire.jing.test0811.Student>
</com.claire.jing.test0811.Student-array>
**************************************
Student [id=10003, name=claire, school=hh]
Student [id=10004, name=leafly, school=hh]
上面都是最简单的序列化和反序列化的格式:
1.当Xml中有属性的时候,如:
<student age="15">
使用上面的反序列化就会报错,此时只要加上:
xstream.useAttributeFor(Student.class, “age”);
2.序列化出来的xml文件中,都带有包名,如果不想让其显示类全名,只要给该类起个别名即可:
xstream.alias(“student”, Student.class);
序列化反序列化--Xstream的使用相关推荐
- 用 XStream 序列化/反序列化 XML 为 Java 对象(实例)
用 XStream 序列化/反序列化 XML 为 Java 对象(实例) Posted on 2007-06-05 19:06 Stephen Wong 阅读(1224) 评论(0) 编辑 收藏 网 ...
- Java 序列化反序列化框架比较
文章目录 一.简介 二.序列化框架 1.JDK 2.XML序列化 3.JSON序列化 4.Hessian 5.Avro序列化 6.Kyro序列化 7.Protostuff 三.序列化框架对比测试 1. ...
- Redis Template使用append方法不起作用的解决办法以及序列化/反序列化的解释
今天使用Redis Template进行测试发现的问题, 遇到这个错 org.springframework.data.redis.serializer.SerializationException: ...
- 序列化反序列化api(入门级)
定义: java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 为什么字符串通常也会进行序列化? 对象需要进行序列化的原因:保证对象的状态不变 ...
- 敏捷中gwt含义_在GWT中序列化/反序列化Json
敏捷中gwt含义 JSON和GWT 最近, GWT用户小组中进行了有趣的讨论 ,涉及在客户端对JSON进行序列化/反序列化的最佳实践. 这篇文章旨在突出其重点. 到目前为止,在GWT中有三种将对象转换 ...
- 在GWT中序列化/反序列化Json
JSON和GWT 最近, GWT用户小组中进行了有趣的讨论 ,涉及在客户端对JSON进行序列化/反序列化的最佳实践. 这篇文章旨在突出其重点. 到目前为止,在GWT中有三种将对象转换为JSON并从客户 ...
- 高效的序列化/反序列化数据方式 Protobuf
高效的序列化/反序列化数据方式 Protobuf github地址 目录 protocolBuffers 序列化 Int32 String Map slice 序列化小结 protocolBuffer ...
- 10.8-全栈Java笔记:序列化/反序列化的步骤和实例
本节我们详细讲解10.3节中提到的序列化和反序列化操作. 序列化和反序列化是什么 当两个进程远程通信时,彼此可以发送各种类型的数据. 无论是何种类型的数据,都会以二进制序列的形式在网络上传送.比如,我 ...
- 【Java】用Jackson进行JSON序列化/反序列化操作
Java类和JSON Speaker类: import java.util.ArrayList; import java.util.Arrays; import java.util.List;publ ...
最新文章
- 吴琦:AI研究一路走到“黑”, 从VQA到VLN
- “从客户端中检测到有潜在危险的 Request.Form 值“的解决方案汇总
- 能被选为2021最佳开源项目的WEB框架究竟有多棒?
- LAMP介绍-MySQL安装
- java字符串最长回文串_Java中的字符串回文程序
- Java多线程学习二十二:为什么 Map 桶中超过 8 个才转为红黑树
- 有“嗅觉”的电脑:英特尔神经拟态芯片能嗅出危险化学品气味
- python3 常见命令_vortex_新浪博客
- fanuc机器人与示教器配对_阳江Fanuc机器人示教器维修中心
- c语言实现http下载功能
- 【哪些年,我们一起追的女孩】第五章
- Apollo-阿波罗配置中心详细使用教程
- 获取json文件中的URL
- 超好用的电脑浏览器广告去除拓展工具
- 游龙传说服务器维护,游龙传说应用宝预约_游龙传说手游应用宝预约v1.0.0_第一手游网...
- 日记500字初中计算机课,日记500字初中日常生活
- 在线生成条形码的解决方案(39码、EAN-13)
- 摩杜云亮相CDEC2021中国数字智能生态大会,始终专注云+数据
- 齐治堡垒机后台存在命令执行漏洞(CNVD-2019-17294)分析
- Houdini 如何加材质贴图
热门文章
- textarea在IE中和FF下不同的效果
- MACOS-Can't-connect-to-local-MySQL-server-through-socket-'/tmp/mysql.sock'
- AspNetCore中使用Ocelot之 IdentityServer4(1)
- pat 1074. 宇宙无敌加法器(20)
- 微信开发 调用摄像机拍照(录像)功能
- [BZOJ]1055: [HAOI2008]玩具取名
- java解析XML大全(转)
- 用jQuery的ajax的功能实现输入自动提示的功能
- 记录一次解决404问题
- 解决jquery之get缓存问题的最简单方法