源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-02-21 06:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java对象序列化与反序列化的默认格式和json格式使用示例
默认格式
[u]复制代码[/u] 代码如下:
public class MyClass implements Serializable{ ...}
序列化:
[u]复制代码[/u] 代码如下:
ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(outputPath)); output.writeObject(myObject);
反序列化:
[u]复制代码[/u] 代码如下:
ObjectInputStream input = new ObjectInputStream(new FileInputStream(inputPath)); return (MyClass)input.readObject();
JSON格式 使用jackson包。jackson是一个效率非常高的Java JSON包。文档和下载见官网。 序列化
[u]复制代码[/u] 代码如下:
ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(new File(outputPath), myObject);
反序列化:
[u]复制代码[/u] 代码如下:
return mapper.readValue(new File(outputPath), MyClass.class);
完整测试代码
[u]复制代码[/u] 代码如下:
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);     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部