Serializable 序列化为字符串 base64
工具类
Base64.java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable; @SuppressWarnings("restriction")
public class Base64 {
/**
* str 编码为base64
*
* @param String s
* @return String base64
* */
public static String getBase64(String s) {
if (s == null)
return null;
return (new sun.misc.BASE64Encoder()).encode(s.getBytes());
} /**
* byte[] 编码为base64
*
* @param byte[] ba
* @return String base64
* */
public static String getBase64(byte[] ba) {
if (ba == null)
return null;
return (new sun.misc.BASE64Encoder()).encode(ba);
} /**
* base64 解码为 byte[]
*
* @param String base64
* @return byte[]
* @throws IOException
* */
public static byte[] base64ToByteArray(String base64) throws IOException {
if (base64 == null)
return null;
return (new sun.misc.BASE64Decoder()).decodeBuffer(base64);
} /**
* 将base64 字符串反序列化为指定的类
*
* @param base64 序列化后用Base64编码的字符串
* @param serializedClass 序列化对象的class
*
* @return typed object, can be null.
* */
@SuppressWarnings("unchecked")
public static <T> T deFromBase64(String base64, Class<T> serializedClass) {
Object o = null;
byte[] ba = null;
ByteArrayInputStream bai = null;
ObjectInputStream oi = null;
try {
ba = Base64.base64ToByteArray(base64);
bai = new ByteArrayInputStream(ba);
oi = new ObjectInputStream(bai);
o = oi.readObject();
} catch (IOException e) {
System.out.println("反序列化失败!");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("类未找到!");
e.printStackTrace();
} finally {
try {
if (oi != null) {
oi.close();
}
if (bai != null) {
bai.close();
}
} catch (IOException e) {
System.out.println("关闭流异常!");
e.printStackTrace();
}
}
return o == null ? null : (T) o;
} /**
* 将对象序列化为Base64 字符串
*
* @param obj 实现了可序列化接口的对象
* @return String 对象序列化为字符串后编码为Base64
* */
public static String se2base64(Serializable obj) {
byte[] ba = null;
ByteArrayOutputStream baos = null;
ObjectOutputStream oos = null;
try {
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
ba = baos.toByteArray();
} catch (IOException e) {
System.out.println("序列化失败!");
} finally {
try {
if (baos != null) {
baos.close();
}
if (oos != null) {
oos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return ba == null ? null : Base64.getBase64(ba);
}
}
测试:
import java.io.Serializable;
public class Test {
public static void main(String[] args) {
Person person = new Person();
person.setName("Xiaoming");
person.setAge(11);
String s = Base64.se2base64(person);
Person xiaoming = Base64.deFromBase64(s, Person.class);
System.out.println(xiaoming.toString());
}
}
class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
运行结果:
Person [name=Xiaoming, age=]
Serializable 序列化为字符串 base64的更多相关文章
- Serializable 序列化为文件
package test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...
- 使用Newtonsoft进行JSON序列化时将枚举序列化为字符串的方法
一.实体书写 将枚举类型的属性前面加上[JsonConverter(typeof(StringEnumConverter))]即可. 二.举例 [JsonConverter(typeof(String ...
- 将 C# 枚举序列化为 JSON 字符串 基础理论
该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的. 一.定义枚举 /// <summary> /// 托寄物品枚举 /// </summary> ...
- 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏
一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...
- @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化
@JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化 https://www.cnblogs.com/sup ...
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...
- Jquery 将表单序列化为Json对象
大家知道Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法.不过,我们可以写一个插件实现. 我在网上看到有人用替换的方法,先用 ...
- jQuery表单验证以及将表单序列化为json对象小练习
jquery表单验证(非实时验证),同时,将表单序列化为json对象提交表单. <!DOCTYPE html> <html lang="en"> <h ...
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...
随机推荐
- autofac meta
http://kevincuzner.com/2014/05/19/extreme-attributed-metadata-autofac/ http://stackoverflow.com/ques ...
- bzoj4025
首先我们要知道,怎么去维护一个是否是二分图 二分图的充要条件:点数>=2且无奇环 重点就是不存在奇环,怎么做呢 考虑随便维护一个图的生成树,不难发现,如果一条边加入后,形成奇环的话就不是二分图 ...
- bzoj1567: [JSOI2008]Blue Mary的战役地图
将矩阵hash.s[0]忘了弄成0,输出中间过程发现了. hash.sort.判重.大概这样子的步骤吧. #include<cstdio> #include<cstring> ...
- version_info
import sys def check_version(): v = sys.version_info if v.major == 3 and v.minor >= 4: return Tru ...
- jQuery的威力
jQuery如此之好用,和其在获取对象时使用与CSS选择器兼容的语法有很大关系,毕竟CSS选择器大家都很熟悉(关于CSS选择器可以看看十分钟搞定CSS选择器),但其强大在兼容了CSS3的选择器,甚至多 ...
- 【ASP.NET】编程点滴 :ASP.NET身份验证
ASP.NET实际开发中身份验证 是一个不可回避的问题.在相当一段长的时间内,由于不求甚解,我对这个话题似懂非懂.今天就对它做个简单的小结. Authentication and Authorizat ...
- 安装--SambaServce
参考地址:快跑蚂蚁的linux之旅--redhat安装配置samba实验win共享linux主机目录 1.使用rpm -qa|grep "samba",查看samba安装包是否安装 ...
- 基于Fragment实现Tab的切换,滑出侧边栏
最近在学习Fragment(碎片)这是android3.0以后提出的概念,很多pad上面的设置部分都是通过Fragment来实现的,先看看具体的效果吧(图一) (图二) (图三)第一章图片是初始时的 ...
- SQL注入中利用XP_cmdshell提权的用法(转)
先来介绍一下子服务器的基本情况,windows 2000 adv server 中文版,据称 打过了sp3,asp+iis+mssql .首先扫描了一下子端口,呵呵,开始的一般步骤. 端口21开放: ...
- HDU 3695-Computer Virus on Planet Pandora(ac自动机)
题意: 给一个母串和多个模式串,求模式串在母串后翻转后的母串出现次数的的总和. 分析: 模板题 /*#include <cstdio> #include <cstring> # ...