当前位置:首页>开发>正文

java序列化和反序列化与json的区别 关于java对象的反序列化

2023-04-19 03:09:32 互联网 未知 开发

 java序列化和反序列化与json的区别 关于java对象的反序列化

java序列化和反序列化与json的区别

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

关于java对象的反序列化

import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.InputStream
import java.io.ObjectInput
import java.io.ObjectInputStream
import java.io.ObjectOutput
import java.io.ObjectOutputStream
import java.io.OutputStream
import java.io.Serializable

public class $ {
    public static void main(String[] args) {

        Bean bean = new Bean("abcde", 20)

        String path = "D:/a.txt"
        try {

            // 写入文件
            OutputStream os = new FileOutputStream(path)
            ObjectOutput ow = new ObjectOutputStream(os)

            ow.writeObject(bean)

            // 读取
            InputStream is = new FileInputStream(path)
            ObjectInput oi = new ObjectInputStream(is)
            Bean bean2 = (Bean) oi.readObject()

            System.out.println(bean2.getName())
            System.out.println(bean2.getAge())
        } catch (Exception e) {
            e.printStackTrace()
        }
    }
}

class Bean implements Serializable {
    private String name
    private int age

    public Bean(String name, int age) {
        this.name = name
        this.age = 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
    }
}

序列化与反序列化:java的哦

实现java.io.Serializable接口,就是你在定义你要序列化的类的时候加上implements java.io.Serializable。
然后就不需要什么操作了,直接进行io就是了,序列化和反序列化任务,java会代你完成的,不需要你写显式代码。
ObjectOutputStream和ObjectInputStream负责对象io,writeObject和readObject用来io已序列化的对象。

怎么反序列化这个对象?

得想将你自定义对象的类实现java.io.Serializablepublic class SomeObject implements Serializable { private String name public SomeObject (final String name) { this.name = name } [...]}final SomeObject myExtra = new SomeObject("any name")然后final Intent intent = new Intent(this, GoToThisActivity.class)intent.putExtra("serializedExtra", myExtra)startActivity(intent)final Intent intent = getIntent()if (intent.hasExtra("serializedExtra")) final SomeObject myExtra= (SomeObject)intent. getSerializableExtra("serializedExtra") [...]}

最新文章