Формат по умолчанию
Кода -копия выглядит следующим образом:
открытый класс MyClass реализует сериализуемые {
...}
Сериализация:
Кода -копия выглядит следующим образом:
ObjectOutputStream output = new objectOutputStream (new FileOutputStream (outputPath));
output.WriteObject (myObject);
Десериализация:
Кода -копия выглядит следующим образом:
ObjectInputStream input = new ObjectInputStream (new FileInputStream (inputPath));
return (myclass) input.readobject ();
Формат JSON
Используйте пакет Джексона. Джексон - очень эффективный пакет Java JSON. Пожалуйста, обратитесь к официальному веб -сайту для документации и загрузки.
Сериализация
Кода -копия выглядит следующим образом:
ObjectMapper mapper = new ObjectMapper ();
mapper.writevalue (новый файл (outputpath), myobject);
Десериализация:
Кода -копия выглядит следующим образом:
return mapper.readvalue (новый файл (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;
Import com.fasterxml.jackson.core.jsongenerationException;
Import com.fasterxml.jackson.core.jsonparseexception;
Import com.fasterxml.jackson.databind.jsonmappingException;
Import com.fasterxml.jackson.databind.objectmapper;
зоопарк открытого класса реализует сериализуемый {
Частный статический конечный длинный SerialVersionuid = 1L;
Private Static ObjectMapper Mapper = new ObjectMapper ();
Public Static Int MaxanimalCount;
Public Arraylist <string> животные;
public Zoo () {
животные = новый ArrayList <string> ();
}
public static void setmax (int max) {
maxanimalcount = max;
}
/**
* Добавьте животное в массив животных.
* @param AnimalName
*/
public void Addanimal (String AnimalName) {
if (Animals.Size () <maxanimalCount)
Животные. Адд (AnimalName);
}
@Override
public String toString () {
вернуть "зоопарк: /n животных:" + животные.toString () +
"/n maxanimalcount:" + maxanimalcount + "/n";
}
/**
* Выходная стандартная сериализация для файла на logPath.
* @param logpath
*/
public void serializetolog (String logpath) {
ObjectOutputStream output = null;
пытаться
{
output = new ObjectOutputStream (
новый FileOutputStream (logPath));
output.WriteObject (это);
} catch (Exception e) {
e.printstacktrace ();
} окончательно {
пытаться {
output.close ();
} catch (ioException e) {
e.printstacktrace ();
}
}
}
/**
* Вывод JSON Serialization (с использованием Джексона) в файл на LogPath.
* @param logpath
*/
public void serializejsontolog (String logpath) {
пытаться {
mapper.writevalue (новый файл (logpath), это);
} catch (jsongenerationException e) {
e.printstacktrace ();
} catch (jsonmappingException e) {
e.printstacktrace ();
} catch (ioException e) {
e.printstacktrace ();
}
}
/**
* Стандартный десериализуйте экземпляр зоопарка из файла на logPath.
* @param logpath
* @return Deserialized Zoo Encem
*/
Публичный статический зоопарк DeserializeFromLog (String logPath) {
ObjectInputStream input = null;
пытаться
{
input = new ObjectInputStream (
new FileInputStream (logPath));
return (ZOO) input.ReadObject ();
} catch (Exception e) {
e.printstacktrace ();
} окончательно {
пытаться {
input.close ();
} catch (ioException e) {
e.printstacktrace ();
}
}
вернуть ноль;
}
/**
* JSON DESUERIALIZE EXENTER Зоопарка из файла на LOGPATH.
* @param logpath
* @return json deserialized Zoo Enmence
*/
Публичный статический зоопарк deserializejsonfromlog (string logpath) {
пытаться {
return mapper.readvalue (новый файл (logpath), Zoo.class);
} catch (jsonParseException e) {
e.printstacktrace ();
} catch (jsonmappingException e) {
e.printstacktrace ();
} catch (ioException e) {
e.printstacktrace ();
}
вернуть ноль;
}
}
класс Zooserializetest {
public static void main (string [] args) {
Зоопарк Zoo1 = новый зоопарк ();
Zoo.SetMax (100);
Zoo1.Addanimal ("Хомяк");
Zoo1.Addanimal («овца»);
Zoo1.serializetolog ("Zoo1.log");
Зоопарк Zoo2 = новый зоопарк ();
Zoo.SetMax (200);
Zoo2.Addanimal («Тигр»);
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 от json: /n" + Zoo1);
}
}