Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีแปลง Bean เป็น XML โดยไม่มี Type Hints ด้วย JSON-lib (Java)

JSON-lib เป็น Java library สำหรับ serialize และ deserialize Java beans, maps, arrays, และ collections ในรูปแบบ JSON เราสามารถแปลง bean เป็น XML โดยไม่มี type hints โดยใช้เมธอด setTypeHintsEnabled() ของคลาส XMLSerializer เมธอดนี้ตั้งค่าว่าจะรวม JSON types เป็น attributes หรือไม่ ส่ง false เพื่อปิด type hints ใน XML

Syntax

public void setTypeHintsEnabled(boolean typeHintsEnabled)

ตัวอย่างการใช้งาน

import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;

public class ConvertBeanToXMLNoHintsTest {
    public static void main(String[] args) {
        Employee emp = new Employee("Krishna Vamsi", 115, 30, "Java");
        JSONObject jsonObj = JSONObject.fromObject(emp);
        System.out.println(jsonObj.toString(3)); // pretty print JSON
        
        XMLSerializer xmlSerializer = new XMLSerializer();
        xmlSerializer.setTypeHintsEnabled(false); // ปิด type hints
        String xml = xmlSerializer.write(jsonObj);
        System.out.println(xml);
    }
    
    public static class Employee {
        private String empName, empSkill;
        private int empId, age;
        
        public Employee(String empName, int empId, int age, String empSkill) {
            this.empName = empName;
            this.empId = empId;
            this.age = age;
            this.empSkill = empSkill;
        }
        
        // getters...
        public String getEmployeeName() { return empName; }
        public int getEmployeeId() { return empId; }
        public String getEmployeeSkill() { return empSkill; }
        public int getAge() { return age; }
    }
}

ผลลัพธ์ (Output)

{
  "employeeName": "Krishna Vamsi",
  "employeeSkill": "Java",
  "employeeId": 115,
  "age": 30
}


  30
  115
  Krishna Vamsi
  Java

คำอธิบาย

เมื่อ setTypeHintsEnabled(false) XML output จะไม่มี attribute type="string" หรือ type="number" ทำให้ XML สะอาด อ่านง่าย และขนาดเล็กลง

เปรียบเทียบ: มี vs ไม่มี Type Hints

มี Type Hints (default):

30
Krishna Vamsi

ไม่มี Type Hints:

30
Krishna Vamsi

กรณีการใช้งาน (Use Cases)

  • เมื่อ XML จะถูก consume โดยระบบที่ไม่รองรับ type hints
  • เมื่อต้องการ XML ขนาดเล็ก (bandwidth saving)
  • เมื่อต้องการ XML ที่อ่านง่ายสำหรับ human
  • การแปลง JSON → XML สำหรับ legacy systems

สรุป

XMLSerializer ของ JSON-lib ให้การแปลง JSON เป็น XML ได้อย่างง่ายดาย การปิด type hints ด้วย setTypeHintsEnabled(false) ทำให้ XML output สะอาดและเข้ากันได้กับระบบที่ไม่คาดหวัง type attributes