首页 > 其他分享 >序列化和反序列化_demo

序列化和反序列化_demo

时间:2023-06-12 23:22:28浏览次数:54  
标签:java name demo toString import new 序列化 id

参考:一文搞懂序列化与反序列化 - 知乎 (zhihu.com)

一、jdk序列化和反序列化

module结构:

 

FactInfo.java

package com.hmb;

import java.io.Serial;
import java.io.Serializable;

public class FactInfo implements Serializable {
    @Serial
    private static final long serialVersionUID = 8059875275354456501L;

    private Integer id;
    private String name;

    public FactInfo(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "[" + id.toString() + name.toString() + "]";
    }
}

  

TestBean.java

package com.hmb;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

public class TestBean implements Serializable {
    @Serial
    private static final long serialVersionUID = -444249457751783736L;
    private Integer id;
    private String name;
    private Date date;

    private FactInfo factInfo;

    public void setFactInfos(List<FactInfo> factInfos) {
        this.factInfos = factInfos;
    }

    private List<FactInfo> factInfos;

    public TestBean(Integer id, String name, Date date, FactInfo factInfo) {
        this.id = id;
        this.name = name;
        this.date = date;
        this.factInfo = factInfo;
    }

    @Override
    public String toString() {
        String factinfoStr = "";
        for (FactInfo factInfo : factInfos) {
            factinfoStr += factInfo.toString();
        }
        return id.toString() + name.toString() + date.toString() + factInfo.toString() + factinfoStr;
    }
}

  

Main.java

package com.hmb;

import java.io.*;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        TestBean testBean = new TestBean(1, "zhangsan", new Date(), new FactInfo(1, "fact1"));
        List<FactInfo> factInfos = new LinkedList<>();
        factInfos.add(new FactInfo(2, "fact2"));
        factInfos.add(new FactInfo(3, "fact3"));
        testBean.setFactInfos(factInfos);
        FileOutputStream fileOutputStream;

        try {
            System.out.println(testBean.toString());
            fileOutputStream = new FileOutputStream("test.txt");
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
            objectOutputStream.writeObject(testBean);
            ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("test.txt"));
            TestBean testBean1 = (TestBean) objectInputStream.readObject();
            System.out.println(testBean1.toString());
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
}

  

运行效果:

 

标签:java,name,demo,toString,import,new,序列化,id
From: https://www.cnblogs.com/hemeiwolong/p/17476348.html

相关文章

  • python基础day23 os模块和序列化模块
    os模块(重要,多)os模块是与操作系统交互的一个接口('a/aa/aaa/aaaa/aaaaa')#递归创建文件夹os.removedirs('a/aa/aaa')#上推删除空文件夹os.mkdir('aaa')#当前文件所在位置创建一个新的文件夹或文件os.mkdir('a.txt')os.rmdir('aaa')#删除当前文件所在位置平级......
  • Python利用jsonpickle库把对象序列化为json
    python中经常要保存一些数据,json是一种理想的存储格式,纯文本的,也方便阅读,但有时使用起来不太方便,比如下面的例子:a=jsonData['A']b=jsonData['B']只能按字典方式引用,还不支持自动完成,不如python对象使用方便.如果定义python类,使用方便,但是保存为文件时......
  • os模块、序列化模块、pickle和json的区别
    os模块#os模块是与操作系统交互的一个接口1.文件相关的os.makedirs('dirname1/dirname2')#可生成多层递归目录os.removedirs('dirname1')#若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.mkdir('dirname')#生成单级目录;相当于shell中mkd......
  • python 序列化模块
    一、jsonJson模块提供了四个功能:dumps、dump、loads、load1、前景什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。序列化的目的以某种存储形式使自定义对象持久化;将对象从一个地方传递到另一个地方。使程序更具维护性2、loads和dumps......
  • django views 序列化
      RESTframework中的序列化类与Django的Form和ModelForm类非常相似。我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSerializer类,它为创建处理模型实例和查询集的序列化提供了有效的快捷方式。Serializers 序列化器允许把像查询......
  • Java反序列化之Commons-Collection篇04-CC4链
    <1>环境分析因为CommonsCollections4除4.0的其他版本去掉了InvokerTransformer不再继承Serializable,导致无法序列化。同时CommonsCollections4的版本TransformingComparator继承了Serializable接口,而CommonsCollections3里是没有的。这个就提供了一个攻击的路径jd......
  • .NET的8种JSON序列化反序列化工具供你选择
    在.NET开发中,.NET的JSON序列化反序列化工具除了Newtonsoft.Json和System.Text.Json其实还有很多优秀的开源的序列化和反序列化工具,这些工具有的性能更加优秀,更加轻量等特征。本文将汇总介绍这些.NET中常用的JSON序列化和反序列化工具,供大家选择参考使用。1、Newtonsoft.Json(Jso......
  • demosaicnet-master的包代码阅读笔记
    init.py我在学init用法时候的笔记该文件里面都是导入模块,其中从dataset.py是导入所有模块,因为模糊导入的__all__没有定义。from.modulesimportBayerDemosaickfrom.modulesimportXTransDemosaickfrom.mosaicimportxtransfrom.mosaicimportbayerfrom.mosaicim......
  • Java Kafka简单地将Map对象序列化为json
    最近用到kafka,想简单地把Map对象序列化为json发送到主题,直接用string序列化,生成的结果不是json,虽然格式很像,key都没有引号,可能是直接调用的toString方法。但是网上搜了一圈,都是spring组合或者其他不太简单的方案。在哔站看了一段视频受到启发,就实现了一个自定义json序列化类,......
  • Alibaba FastJSON 反序列化json时字段值未成功赋值
    FastJson是一个将对象序列化为json字符串和将字符串反序列化为对象的一个工具,但是在反序列化解析时,可能会出现字段值丢失的问题,笔者在手撸rpc框架的时候,对于客户端传过来的json字符串总是有一个字段值解析为null,在客户端解析却又是正常的,花费了很多时间去找这个bug,通过解析Jsonpa......