[英]Saving Java objects into files
我在Java中有以下類。 我希望能夠將它保存為一個通用的文件格式,可以在不同的PC上移動。 我知道對象序列化但我想知道我的其他選擇是什么以及它們各自的優缺點是什么。 謝謝! 例如,序列化文件不是人類可讀的,因此是騙局。
public class NervousSystem {
private CentralNervousSystem CNS;
private PeripheralNervousSystem PNS;
public NervousSystem(Neocortex neocortex, LateralGeniculateNucleus LGN, Retina retina) {
this.CNS = new CentralNervousSystem(neocortex, LGN);
this.PNS = new PeripheralNervousSystem(retina);
}
public CentralNervousSystem getCNS() {
return this.CNS;
}
public PeripheralNervousSystem getPNS() {
return this.PNS;
}
}
對於Json,使用GSON ......
它支持任意復雜的對象,您不需要setter或getter。 Gson只是把它弄清楚了。
轉換為JSON
Gson gson = new Gson();
String myObjectJson = gson.toJson( myObj);
println myObjectJson
從JSON轉換
MyObj obj = gson.fromJson(myObjectJson, MyObj.class)
您可以使用java.beans.XMLEncoder
生成javabean的XML。 在這里查看一個教程。
生成一個xml的示例:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.7.0_10" class="java.beans.XMLDecoder">
<object class="com.test.MyBean">
<void property="myBoolean">
<boolean>true</boolean>
</void>
<void property="myString">
<string>xml is cool</string>
</void>
<void property="myVector">
<object class="java.util.Vector">
<void method="add">
<string>one</string>
</void>
<void method="add">
<string>two</string>
</void>
<void method="add">
<string>three</string>
</void>
</object>
</void>
</object>
</java>
根據注釋,JAXB marshalls和unmarshalls對象。 注釋允許您:
例如,帶注釋的類可能如下所示:
@XmlRootElement(name="foo")
@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {
@XmlTransient
private String m_temp;
@XmlAttribute(name="fieldA")
private String fieldA;
...
}
看看xstream ,一個簡單而常用的Java XML序列化庫。 簡而言之,它看起來像這樣(例子來自xstream網站):
public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// getters & setters
}
public class PhoneNumber {
private int code;
private String number;
// getters & setters
}
XStream xstream = new XStream();
Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
String xml = xstream.toXML(joe);
XML內容如下所示:
<mypackage.Person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</mypackage.Person>
這是最簡單的示例,您可以針對更復雜的情況進行大量自定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.