デフォルト形式
コードコピーは次のとおりです。
パブリッククラスのmyClassはシリアル化可能な実装{
...}
シリアル化:
コードコピーは次のとおりです。
objectOutputStream output = new objectOutputStream(new FileOutputStream(outputPath));
output.writeObject(myobject);
Desarialization:
コードコピーは次のとおりです。
ObjectInputStream input = new ObjectInputStream(new FileInputStream(inputPath));
return(myclass)input.readObject();
JSON形式
ジャクソンパッケージを使用します。ジャクソンは非常に効率的なJava JSONパッケージです。ドキュメントとダウンロードについては、公式Webサイトを参照してください。
シリアル化
コードコピーは次のとおりです。
ObjectMapper mapper = new objectMapper();
mapper.writevalue(new File(outputPath)、myObject);
Desarialization:
コードコピーは次のとおりです。
return mapper.readValue(new File(outputPath)、myclass.class);
完全なテストコード
コードコピーは次のとおりです。
java.io.fileをインポートします。
java.io.fileinputStreamをインポートします。
java.io.fileoutputStreamをインポートします。
java.io.ioexceptionをインポートします。
java.io.objectinputStreamをインポートします。
java.io.objectOutputStreamをインポートします。
java.io.serializableをインポートします。
java.util.arraylistをインポートします。
com.fasterxml.jackson.core.jsongenerationexceptionをインポートします。
com.fasterxml.jackson.core.jsonparseexceptionをインポートします。
com.fasterxml.jackson.databind.jsonmappingexception;
com.fasterxml.jackson.databind.objectmapperをインポートします。
パブリッククラスの動物園はシリアル化可能なものを実装しています{
private static final long serialversionuid = 1l;
private static objectmapper mapper = new objectMapper();
public static int maxanimalcount;
public arraylist <string>動物;
public zoo(){
動物= new ArrayList <String>();
}
public static void setmax(int max){
maxanimalcount = max;
}
/**
*動物を動物のアレイに追加します。
* @Param AnimalName
*/
public void addanimal(string animalname){
if(animals.size()<maxanimalcount)
Animals.Add(AnimalName);
}
@オーバーライド
public string toString(){
「動物園: /n動物を返します: " +動物.toString() +
"/n maxanimalcount:" + maxanimalcount + "/n";
}
/**
* LogPathでファイルするための標準シリアル化を出力します。
* @param logpath
*/
public void serializetolog(string logpath){
ObjectOutputStream出力= null;
試す
{
output = new objectOutputStream(
new fileoutputStream(logpath));
output.writeObject(this);
} catch(例外e){
e.printstacktrace();
} ついに {
試す {
output.close();
} catch(ioException e){
e.printstacktrace();
}
}
}
/**
* JSONシリアル化(Jacksonを使用)を出力して、LogPathに提出します。
* @param logpath
*/
public void serializejsontolog(string logpath){
試す {
mapper.writevalue(new file(logpath)、this);
} catch(jSongenerationException e){
e.printstacktrace();
} catch(jsonmappingexception e){
e.printstacktrace();
} catch(ioException e){
e.printstacktrace();
}
}
/**
* LogPathのファイルから動物園インスタンスを標準化します。
* @param logpath
* @return脱介入動物園インスタンス
*/
public static zoo deserializefromlog(string logpath){
ObjectInputStream input = null;
試す
{
input = new ObjectInputStream(
new fileinputStream(logpath));
return(zoo)input.readObject();
} catch(例外e){
e.printstacktrace();
} ついに {
試す {
input.close();
} catch(ioException e){
e.printstacktrace();
}
}
nullを返します。
}
/**
* JSONは、LogPathのファイルから動物園インスタンスを降らせます。
* @param logpath
* @return jsonの脱色動物園インスタンス
*/
public static zoo deserializejsonfromlog(string logpath){
試す {
return mapper.readValue(new File(logpath)、zoo.class);
} catch(jsonparseexception e){
e.printstacktrace();
} catch(jsonmappingexception e){
e.printstacktrace();
} catch(ioException e){
e.printstacktrace();
}
nullを返します。
}
}
クラス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);
//降下
zoo1 = zoo.deserializefromlog( "zoo1.log");
zoo2 = zoo.deserializefromlog( "zoo2.log");
System.out.println( "zoo1: /n" + zoo1);
System.out.println( "zoo2: /n" + zoo2);
// JSONにシリアル化します
zoo1.serializejsontolog( "zoo1.json");
zoo1 = zoo.deserializejsonfromlog( "zoo1.json");
System.out.println( "zoo1 from json: /n" + zoo1);
}
}