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=11]
时间: 2024-10-30 08:22:10

Serializable 序列化为字符串 base64的相关文章

Serializable 序列化为文件

package test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.

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

Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 - 转载请保留该原文链接) 07/19/12 03:08:05 PM 在Jedis开发中,我们很多时候希望直接把一个对象放到Redis中,然后在需要的时候取出来.Redis的key和value都支持二进制安全的字符串,存储Java对象不是问题,下面我们看一下如何来实现. 1要存储的对象 现在写一个

JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。

JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象.要添加System.Web.Extensions.dll的引用.该类位于System.Web.Script.Serialization命名空间下. 一.属性 MaxJsonLength 获取或设置 JavaScriptSerializer 类接受的 JSON 字符串的最大长度. Recursio

form表单序列化为json格式数据

在web开发过程中,经常遇到将form序列化不能格式的字符串提交到后台,下面就介绍怎样将form表单序列化为json字符串. 首先,是扩展的jquery序列化插件,依赖jquery.经测试,这段代码可以放在$(funciton(){})中,也可以放在外面,都可以实现效果. $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.

python数据结构-序列之字符串

python中包含六种内建的序列:列表:元组:字符串:unicode字符串:buffer对象:xrange对象. 一.字符串: 所有标准的序列操作(索引.分片.乘法.加.成员资格.迭代.求最大最小值等)对字符串同样使用.需要注意的一点是字符串都是不可变的. 1.基本操作 >>> a="iloveu">>> a[0]        //索引'i'>>> b="uloveme">>> a+b    

06 序列:字符串、列表和元组 - 《Python 核心编程》

?? 序列简介 ?? 字符串 ?? 列表 ?? 元组 6.1 序列顺序访问 序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到. 而多个元素可以通过切片操作的方式一次得到. 下标偏移量是从0 开始到总元素数-1 结束. 标准类型操作符 标准类型操作符一般都能适用于所有的序列类型. 序列类型操作符 成员关系操作符 (in, not in) 连接操作符( + ) 重复操作符 ( * ) 切片操作符 ( [], [:], [::] )  正负索引的区别在于正索引以序列的开始为起

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

JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象.要添加System.Web.Extensions.dll的引用.该类位于System.Web.Script.Serialization命名空间下. 一.属性 MaxJsonLength 获取或设置 JavaScriptSerializer 类接受的 JSON 字符串的最大长度. Recursio

.NET实现字符串base64编码

using System; using System.Text; using System.IO; using System.Security; using System.Security.Cryptography; namespace Tgnet.Base.Security { /**//// <summary> /// 有关Base64编码算法的相关操作 /// </summary> /// <example>如下的示例为对一个字符串进行Base64编码,并返回编码

Jquery 将表单序列化为Json对象

使用下面代码时注意不要忘记引入jquery文件,以下代码可以复制到html文件中执行可看到效果,非常方便好用.附代码: <!DOCTYPE html> <html> <head> <title></title> <script src="jquery-2.0.3.min.js"> </script> </head> <body> <form id="myForm&