java对象与字符串的序列化和反序列化

package com.mzj.practice.utils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SerializeUtils {
    private static final Logger LOG = LoggerFactory.getLogger(SerializeUtils.class);

    /**
     * 对象序列化为字符串
     */
    public static String serialize(Object obj) throws Exception {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
        objectOutputStream.writeObject(obj);
        String serStr = byteArrayOutputStream.toString("UTF-8");
        LOG.info("对象obj:【" + obj + "】序列化serStr:【" + serStr + "】");

        objectOutputStream.close();
        byteArrayOutputStream.close();
        return serStr;
    }

    /**
     * 字符串 反序列化为 对象
     */
    public static Object unSerialize(String serStr) throws Exception {
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(serStr.getBytes("UTF-8"));
        ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
        Object obj = objectInputStream.readObject();
        LOG.info("对象obj:【" + obj + "】反序列化serStr:【" + serStr + "】");

        objectInputStream.close();
        byteArrayInputStream.close();
        return obj;
    }

}
时间: 2024-10-13 04:50:43

java对象与字符串的序列化和反序列化的相关文章

.NET Core 对象到字节数组的序列化和反序列化

.NET Core中利用MemoryStream和BinaryFormatter可以实现对象到字节数组的序列化和反序列化: 定义ObjectSerializer类,实现对象到字节数组的序列化和反序列化 using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace Assembly { public static class O

序列化: 一个老家伙的咸鱼翻身(Java对象、XML、JSON、反序列化)

原文链接:https://mp.weixin.qq.com/s/ybpdxx2lvZNNqaoXHG24Zg 转自:码农翻身(微信号:coderising) 1.寒冬的蛰伏 这里的工作很繁忙,一年365天, 一天24小时几乎不停工. 但是我却是一个闲人, 因为我做的工作最近用的人太少了, 经常被冷落在一边. 大多数时候,我只能羡慕的看着线程.反射.注解.集合.泛型这些明星员工在那里忙忙碌碌, 听着他们充满激情的的大声说笑. 他们都叫我序列化,想想也是, 我的工作就是把一个Java 对象变成二进制

Java将对象写入文件读出——序列化与反序列化

Java类中对象的序列化工作是通过ObjectOutputStream和ObjectInputStream来完成的. 写入: 1 File aFile=new File("e:\\c.txt"); 2 Stu a=new Stu(1, "aa", "1"); 3 FileOutputStream fileOutputStream=null; 4 try { 5 fileOutputStream = new FileOutputStream(aFi

Java 中关键字transient引出序列化与反序列化

一:transient(临时的)关键字 1.transient关键字只能修饰变量,而不能修饰方法和类.注意,本地变量是不能被transient关键字修饰的. 2.被transient关键字修饰的变量不能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化. 3.一旦变量被transient修饰,变量将不再是持久化的一部分,该变量内容在序列化后无法获得访问.也可以认为在将持久化的对象反序列化后,被transient修饰的变量将按照普通类成员变量一样被初始化. 二:java对象序列

MessagePack Java Jackson Dataformat - POJO 的序列化和反序列化

在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义. https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/main/java/com/insight/demo/serialize/model/msgpack/MessageData.java POJO 的序列化和反序列化 你仅仅需要对 MessagePackFactory

Java中对文件的序列化和反序列化

public class ObjectSaver { public static void main(String[] args) throws Exception { /*其中的 D:\\objectFile.obj 表示存放序列化对象的文件*/ //序列化对象 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("c:\\test\\objectFile.obj")); Customer cust

Java对象的序列化、反序列化

对象的序列化(Serialize):将内存中的Java对象转换为与平台无关的二进制流(字节序列),然后存储在磁盘文件中,或通过网络传输给另一个网络节点. 对象的反序列化(Deserialize):获取序列化的二进制流(不管是通过网络,还是通过读取磁盘文件),将之恢复为原来的Java对象. 要实现对象的序列化,该对象所属的类必须要是可序列化的,即该类必须实现以下2个接口之一: Serializable     这只是一个标记接口,此接口只是表明该类是可序列化的,不用实现任何方法.Java自带的类基

为什么JAVA对象需要实现序列化?

序列化是一种用来处理对象流的机制. 所谓对象流:就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间. 序列化是为了解决在对对象流进行读写操作时所引发的问题. 序列化的实现:将需要被序列化的类实现Serializable接口(标记接口),该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象

[转]Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

原文地址:https://blog.csdn.net/qq_27093465/article/details/78544505 遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题: 1.什么叫序列化和反序列化 2.作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化 3.serialVersionUID 这个的值到底是在怎么设置的,有什么用.有的是1L,有的是一长串数字,迷惑ing. 我刚刚见到这个关键字 Serializable 的时候,就