栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java对象序列化与反序列化的默认格式和json格式使用示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java对象序列化与反序列化的默认格式和json格式使用示例

默认格式

复制代码 代码如下:
public class MyClass implements Serializable{
...}

序列化:
复制代码 代码如下:
ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(outputPath));
output.writeObject(myObject);

反序列化:
复制代码 代码如下:
ObjectInputStream input = new ObjectInputStream(new FileInputStream(inputPath));
return (MyClass)input.readObject();

JSON格式

使用jackson包。jackson是一个效率非常高的Java JSON包。文档和下载见官网。

序列化
复制代码 代码如下:
ObjectMapper mapper = new ObjectMapper();
mapper.writevalue(new File(outputPath), myObject);

反序列化:
复制代码 代码如下:
return mapper.readValue(new File(outputPath), MyClass.class);

完整测试代码
复制代码 代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Zoo implements Serializable {

    private static final long serialVersionUID = 1L;
    private static ObjectMapper mapper = new ObjectMapper();

    public static int maxAnimalCount;
    public ArrayList animals;

    public Zoo() {
        animals = new ArrayList();
    }

    public static void setMax(int max){
        maxAnimalCount = max;
    }

   
    public void addAnimal(String animalName){
        if (animals.size() < maxAnimalCount)
            animals.add(animalName);
    }

    @Override
    public String toString(){
        return "Zoo: n animals: " + animals.toString() +
                "n maxAnimalCount: " + maxAnimalCount + "n";
    }

   
    public void serializeToLog(String logPath) {
        ObjectOutputStream output = null;
        try
        {
            output = new ObjectOutputStream(
                    new FileOutputStream(logPath));
            output.writeObject(this);
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try {
                output.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

   
    public void serializeJSonToLog(String logPath){

        try {
            mapper.writevalue(new File(logPath), this);
        } catch (JsonGenerationException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

   
    public static Zoo deserializeFromLog(String logPath) {
        ObjectInputStream input = null;
        try
        {
            input =new ObjectInputStream(
                    new FileInputStream(logPath));
            return (Zoo)input.readObject();
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try {
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return null;
    }

   
    public static Zoo deserializeJSonFromLog(String logPath){
        try {
            return mapper.readValue(new File(logPath), Zoo.class);
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }
}

class ZooSerializeTest {
    public static void main(String[] args) {
        Zoo zoo1 = new Zoo();
        Zoo.setMax(100);
        zoo1.addAnimal("hamster");
        zoo1.addAnimal("sheep");

        zoo1.serializeToLog("zoo1.log");

        Zoo zoo2 = new Zoo();
        Zoo.setMax(200);
        zoo2.addAnimal("tiger");

        zoo2.serializeToLog("zoo2.log");

        Zoo.setMax(300);

        //Deserialization
        zoo1 = Zoo.deserializeFromLog("zoo1.log");
        zoo2 = Zoo.deserializeFromLog("zoo2.log");

        System.out.println("zoo1: n" + zoo1);
        System.out.println("zoo2: n" + zoo2);

        //Serialize to JSON
        zoo1.serializeJSonToLog("zoo1.json");
        zoo1 = Zoo.deserializeJSonFromLog("zoo1.json");

        System.out.println("zoo1 from json: n" + zoo1);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/152469.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号