The default and json formats for serialization and deserialization of Java objects are used in the examples

  • 2020-04-01 03:00:05
  • OfStack

The default format


public class MyClass implements Serializable{
...}

Serialization:


ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(outputPath)); 
output.writeObject(myObject);

Deserialization:


ObjectInputStream input = new ObjectInputStream(new FileInputStream(inputPath)); 
return (MyClass)input.readObject();

JSON format

Use the Jackson package. Jackson is a very efficient Java JSON package. See the official website for documents and downloads.

serialization


ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(new File(outputPath), myObject);

Deserialization:


return mapper.readValue(new File(outputPath), MyClass.class);

Complete test code


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<String> animals;
    public Zoo() {
        animals = new ArrayList<String>();
    }

    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);
    }
}


Related articles: