工具类

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的更多相关文章

  1. Serializable 序列化为文件

    package test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  2. 使用Newtonsoft进行JSON序列化时将枚举序列化为字符串的方法

    一.实体书写 将枚举类型的属性前面加上[JsonConverter(typeof(StringEnumConverter))]即可. 二.举例 [JsonConverter(typeof(String ...

  3. 将 C# 枚举序列化为 JSON 字符串 基础理论

    该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的. 一.定义枚举 /// <summary> /// 托寄物品枚举 /// </summary> ...

  4. 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏

    一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...

  5. @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化

    @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化 https://www.cnblogs.com/sup ...

  6. Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)

    Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...

  7. Jquery 将表单序列化为Json对象

    大家知道Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法.不过,我们可以写一个插件实现. 我在网上看到有人用替换的方法,先用 ...

  8. jQuery表单验证以及将表单序列化为json对象小练习

    jquery表单验证(非实时验证),同时,将表单序列化为json对象提交表单. <!DOCTYPE html> <html lang="en"> <h ...

  9. JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象

    JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...

随机推荐

  1. 宏buf_pool_struct

    typedef struct buf_pool_struct buf_pool_t; /** @brief The buffer pool structure. NOTE! The definitio ...

  2. 基于XMPP的即时通信系统的建立(三)— 程序设计概览

    XMPP与HTTP的比较 XMPP的优势 Ÿ   1. 推送数据 HTTP只能从服务器哪里请求数据,除非服务器正在响应客户端请求,否则不能向客户端发送数据.但XMPP连接是双向的,任何一方在任何时候都 ...

  3. bzoj4048 3928

    羞耻,分组赛上考的,竟然没想出来, 对坐标离散化后区间dp即可,竟然还双倍经验 ; ..,..] of longint; v:..] of longint; a,b,h:..] of longint; ...

  4. BZOJ3850: ZCC Loves Codefires

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3850 题解:类似于国王游戏,推一下相邻两个元素交换的条件然后排个序就可以了. 代码: #inc ...

  5. “main cannot be resolved or is not a field”解决方案

    .layout.main总是在layout上有错误提示波浪线. 解决方法: (1) 删除"import android.R;". (2) 勾选上Eclipse中的"Pro ...

  6. css清除浮动的两种方式(clearfix和clear)

    最近总是在用浮动,这两种方式总是浮现在眼前,或者说去掉父级和同级浮动样式总在思考中.两种方式怎么写都在base.css中. 在做瑞祥之旅的过程中,还是吃了一个大亏,就是清除浮动,不管是同级还是父级,都 ...

  7. hihoCoder 1385 A Simple Job

    #1385 : A Simple Job 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Institute of Computational Linguistics (I ...

  8. JUC之Atomic系列12大类实例讲解和原理分解

    在java6以后我们不但接触到了Lock相关的锁,也接触到了很多更加乐观的原子修改操作,也就是在修改时我们只需要保证它的那个瞬间是安全的即可,经过相应的包装后可以再处理对象的并发修改,以及并发中的AB ...

  9. Dev gridControl 添加表标题

    1.OptionsView ->ShowViewCaption = True 2.ViewCaption = "标题"

  10. Delphi 利用TComm组件 Spcomm 实现串行通信

    Delphi 利用TComm组件 Spcomm 实现串行通信 摘要:利用Delphi开发工业控制系统软件成为越来越多的开发人员的选择,而串口通信是这个过程中必须解决的问题之一.本文在对几种常用串口通信 ...