手机
当前位置:查字典教程网 >编程开发 >Java >java对象序列化与反序列化的默认格式和json格式使用示例
java对象序列化与反序列化的默认格式和json格式使用示例
摘要:默认格式复制代码代码如下:publicclassMyClassimplementsSerializable{...}序列化:复制代码代码如下...

默认格式

复制代码 代码如下:

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<String> animals;

public Zoo() {

animals = new ArrayList<String>();

}

public static void setMax(int max){

maxAnimalCount = max;

}

/**

* Add an animal to animals Array.

* @param animalName

*/

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";

}

/**

* Output standard serialization to file at logPath.

* @param logPath

*/

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

}

}

}

/**

* Output JSON serialization(using jackson) to file at logPath.

* @param logPath

*/

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

}

}

/**

* Standard deserialize a Zoo instance from file at logPath.

* @param logPath

* @return deserialized zoo instance

*/

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;

}

/**

* JSON deserialize a Zoo instance from file at logPath.

* @param logPath

* @return JSON deserialized zoo instance

*/

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

}

}

【java对象序列化与反序列化的默认格式和json格式使用示例】相关文章:

基于Java回顾之反射的使用分析

java序列化和java反序列化示例

在java中使用dom4j解析xml(示例代码)

java中break和continue区别及使用场合分析

将字符串数字格式化为样式1,000,000,000的方法

java中final关键字使用示例详解

Java输入输出流的使用详细介绍

Java 字符终端上获取输入三种的方式分享

java 用递归获取一个目录下的所有文件路径的小例子

java中子类继承父类,程序运行顺序的深入分析

精品推荐
分类导航