在使用Java進行后端開發(fā)的過程中,格式化XML和JSON數(shù)據(jù)是很常見的任務。本文將介紹Java中如何格式化XML和JSON。
格式化XML數(shù)據(jù)需要使用Java提供的JAXB庫。首先,需要創(chuàng)建對應的Java對象用于存儲XML文件中的數(shù)據(jù)。接著,使用JAXB庫將這些Java對象轉換為XML格式的字符串,然后使用標準的XML庫將XML字符串格式化輸出即可。以下是示例代碼:
public class Person {
private String name;
private int age;
// getters and setters
}
// 創(chuàng)建Person對象
Person person = new Person();
person.setName("John");
person.setAge(25);
// 創(chuàng)建JAXBContext對象
JAXBContext context = JAXBContext.newInstance(Person.class);
// 將Person對象轉換為XML格式的字符串
StringWriter writer = new StringWriter();
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(person, writer);
String xmlString = writer.toString();
// 使用標準的XML庫格式化輸出XML字符串
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xmlString)));
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(new DOMSource(document), new StreamResult(new File("person.xml")));
與XML不同,Java自帶了JSON的解析庫。可以使用JSONObject和JSONArray來存儲和解析JSON數(shù)據(jù)。以下是示例代碼:
import org.json.*;
public class Main {
public static void main(String[] args) throws JSONException {
// 創(chuàng)建JSONObject對象
JSONObject json = new JSONObject();
json.put("name", "John");
json.put("age", 25);
JSONArray jsonArray = new JSONArray();
jsonArray.put("Java");
jsonArray.put("Python");
jsonArray.put("C++");
json.put("languages", jsonArray);
// 格式化輸出JSON
System.out.println(json.toString(4));
}
}
代碼中的JSONObject和JSONArray分別用于存儲和解析JSON數(shù)據(jù)。JSONObject是一個類似于Map的鍵值對集合,用于存儲JSON對象。而JSONArray是一個類似于List的序列集合,用于存儲JSON數(shù)組。
在輸出JSON時,可以使用toString方法將JSONObject或JSONArray對象轉換為字符串。傳入一個數(shù)字參數(shù),表示每個縮進的空格數(shù),然后就可以格式化輸出JSON數(shù)據(jù)了。