คลาส net.sf.json.xml.XMLSerializer เป็น utility class สำหรับแปลง JSON เป็น XML เมื่อแปลง instance ของ JSONObject เป็น XML คลาสนี้สามารถเพิ่ม hints สำหรับแปลงกลับเป็น JSON ได้ เราสามารถใช้เมธอด write() ของ XMLSerializer เพื่อเขียน JSON value เป็น XML string ด้วย UTF-8 encoding และคืนค่า string representation ของ well-formed XML document
Syntax
public String write(JSON json)
ตัวอย่างการใช้งาน
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
public class ConvertBeanToXMLTest {
public static void main(String[] args) {
Student student = new Student("Sai", "Adithya", 25, "Pune");
JSONObject jsonObj = JSONObject.fromObject(student);
System.out.println(jsonObj.toString(3)); // pretty print JSON
XMLSerializer xmlSerializer = new XMLSerializer();
String xml = xmlSerializer.write(jsonObj);
System.out.println(xml);
}
public static class Student {
private String firstName, lastName, address;
public int age;
public Student(String firstName, String lastName, int age, String address) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.address = address;
}
// getters...
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public int getAge() { return age; }
public String getAddress() { return address; }
}
}
ผลลัพธ์ (Output)
{
"firstName": "Sai",
"lastName": "Adithya",
"address": "Pune",
"age": 25
}
Pune
25
Sai
Adithya
คำอธิบาย
XML output มี root element <o> (object) และแต่ละ property กลายเป็น child element พร้อม attribute type ระบุ JSON type (string, number, boolean, array, object) นี่คือ default behavior เมื่อ type hints เปิดอยู่ (enabled by default)
โครงสร้าง XML Output
- Root element:
<o>สำหรับ object,<a>สำหรับ array - Property elements: ชื่อ property เป็น tag name
- Type attribute:
type="string|number|boolean|array|object" - Nested objects: ซ้อนกันเป็น hierarchy
- Arrays: ใช้
<a>wrap และ<e>(element) สำหรับแต่ละ item
การปรับแต่งเพิ่มเติม
setTypeHintsEnabled(false)- ปิด type attributes (ดูบทความก่อนหน้า)setRootName("customRoot")- เปลี่ยน root element name- Custom namespace support
สรุป
JSON-lib ให้การแปลง Bean → JSON → XML ได้อย่างราบรื่น XMLSerializer เป็นทางเลือกที่ดีสำหรับการแปลง JSON เป็น XML แบบง่าย แต่สำหรับ production ควรพิจารณา JAXB หรือ Jackson XML module ที่มีคุณสมบัติครบครันกว่า