JSON-lib जावा बीन्स, मैप्स, ऐरे, और कलेक्शन्स को JSON फॉर्मेट में सीरियलाइज और डीसीरियलाइज करने के लिए एक जावा लाइब्रेरी है। हम XMLSerializer क्लास के setTypeHintsEnabled() मेथड का उपयोग करके बीन को टाइप हिंट्स के बिना XML में कन्वर्ट कर सकते हैं, यह मेथड सेट करता है कि JSON टाइप्स को एट्रिब्यूट्स के रूप में शामिल किया जा सकता है या नहीं। हम इस मेथड में false आर्गुमेंट पास करके XML में टाइप हिंट्स को डिसेबल कर सकते हैं।
सिंटैक्स
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)); // प्रिटी प्रिंट JSON
XMLSerializer xmlSerializer = new XMLSerializer();
xmlSerializer.setTypeHintsEnabled(false); // यह मेथड टाइप हिंट्स को डिसेबल करता है
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) {
super();
this.empName = empName;
this.empId = empId;
this.age = age;
this.empSkill = empSkill;
}
// गेटर्स...
public String getEmployeeName() { return empName; }
public int getEmployeeId() { return empId; }
public String getEmployeeSkill() { return empSkill; }
public int getAge() { return age; }
}
}
आउटपुट
{
"employeeName": "Krishna Vamsi",
"employeeSkill": "Java",
"employeeId": 115,
"age": 30
}
30
115
Krishna Vamsi
Java
टाइप हिंट्स के साथ आउटपुट (डिफ़ॉल्ट)
30
115
Krishna Vamsi
Java
मुख्य अंतर
| पहलू | टाइप हिंट्स के साथ | टाइप हिंट्स के बिना |
|---|---|---|
| XML आकार | बड़ा (टाइप एट्रिब्यूट्स) | छोटा |
| डीसीरियलाइजेशन | टाइप इन्फो संरक्षित | टाइप इन्फो खो जाती है |
| रीडेबिलिटी | कम (वर्बोज़) | अधिक (क्लीन) |
| इंटरऑपरेबिलिटी | JSON-lib स्पेसिफिक | स्टैंडर्ड XML |
कब टाइप हिंट्स डिसेबल करें
- थर्ड-पार्टी XML कंज्यूमर्स के लिए जो टाइप एट्रिब्यूट्स नहीं समझते
- क्लीनर, मानव-पठनीय XML के लिए
- जब टाइप इन्फो आवश्यक न हो (स्कीमा-आधारित वैलिडेशन)
- बैंडविड्थ/स्टोरेज ऑप्टिमाइजेशन के लिए
अन्य XMLSerializer विकल्प
XMLSerializer serializer = new XMLSerializer();
serializer.setTypeHintsEnabled(false);
serializer.setRootName("employee"); // कस्टम रूट एलिमेंट नाम
serializer.setNamespace("https://example.com/ns"); // नेमस्पेस
String xml = serializer.write(jsonObj);
नोट
JSON-lib लिगेसी है। आधुनिक XML/JSON कन्वर्जन के लिए Jackson (XmlMapper) या JAXB का उपयोग करें।