欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java xml json 序列化

阮建安2年前8瀏覽0評論

在Java中,我們經(jīng)常需要將對象轉(zhuǎn)換成XML或JSON格式,以便于數(shù)據(jù)的傳輸和存儲。這個過程就是序列化。Java提供了多種序列化的方式,其中XML和JSON是比較常用的兩種格式。

對于XML的序列化,我們可以使用Java提供的DOM或SAX API來實(shí)現(xiàn)。DOM API是一種將整個XML文檔加載到內(nèi)存中的方式,可以對文檔進(jìn)行隨意的遍歷和修改。而SAX API則是一種事件型的解析方式,可以在解析過程中對每個節(jié)點(diǎn)進(jìn)行相應(yīng)的處理。

// DOM方式
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
Element root = doc.createElement("person");
doc.appendChild(root);
Element name = doc.createElement("name");
name.setTextContent("Tom");
root.appendChild(name);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setOutputProperty(OutputKeys.INDENT, "yes");
StringWriter sw = new StringWriter();
t.transform(new DOMSource(doc), new StreamResult(sw));
String xml = sw.toString();
System.out.println(xml);
// SAX方式
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
DefaultHandler handler = new DefaultHandler(){
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println("start element: " + qName);
}
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println("end element: " + qName);
}
public void characters(char[] ch, int start, int length) throws SAXException {
System.out.println("characters: " + new String(ch, start, length));
}
};
sp.parse(new InputSource(new StringReader("Tom")), handler);

對于JSON的序列化,我們可以使用Java提供的Jackson或Gson庫來實(shí)現(xiàn)。這兩個庫都是比較成熟穩(wěn)定的庫,支持注解、反序列化等高級功能。

// 使用Jackson庫序列化為JSON
ObjectMapper mapper = new ObjectMapper();
Person person = new Person("Tom", 18);
String json = mapper.writeValueAsString(person);
System.out.println(json);
// 使用Gson庫序列化為JSON
Gson gson = new Gson();
Person person = new Person("Tom", 18);
String json = gson.toJson(person);
System.out.println(json);

無論是XML還是JSON的序列化,都可以通過相應(yīng)的庫來實(shí)現(xiàn)。我們只需要選擇一個合適的庫,并按照其提供的API來編寫代碼即可。