एक JSONObject नाम/वैल्यू पेयर्स का एक अनऑर्डर्ड कलेक्शन है जबकि Map एक ऑब्जेक्ट है जो कीज़ को वैल्यूज से मैप करता है। एक Map में डुप्लिकेट कीज़ नहीं हो सकतीं और प्रत्येक की अधिकतम एक वैल्यू से मैप हो सकती है। हमें JSON-lib लाइब्रेरी की आवश्यकता होती है सीरियलाइजिंग और डीसीरियलाइजिंग के लिए Map को JSON फॉर्मेट में। प्रारंभ में, हम एक POJO क्लास बना सकते हैं और इस इंस्टेंस को Map क्लास के put() मेथड के आर्गुमेंट के रूप में पास कर सकते हैं और अंत में इस मैप इंस्टेंस को JSONObject के accumulateAll() मेथड में जोड़ सकते हैं।
सिंटैक्स
public void accumulateAll(Map map)
उदाहरण
import java.util.*;
import net.sf.json.JSONObject;
public class ConvertMapToJSONObjectTest {
public static void main(String[] args) throws Exception {
JSONObject jsonObject = new JSONObject();
Map<Integer, Employee> employees = new HashMap<>();
employees.put(1, new Employee("Adithya", "Jai", 30));
employees.put(2, new Employee("Vamsi", "Krishna", 28));
employees.put(3, new Employee("Chaitanya", "Sai", 30));
jsonObject.accumulateAll(employees);
System.out.println(jsonObject.toString(3)); // प्रिटी प्रिंट JSON
}
public static class Employee {
private String firstName, lastName;
private int age;
public Employee(String firstName, String lastName, int age) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
// गेटर्स...
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public int getAge() { return age; }
}
}
आउटपुट
{
"1": {
"firstName": "Adithya",
"lastName": "Jai",
"age": 30
},
"2": {
"firstName": "Vamsi",
"lastName": "Krishna",
"age": 28
},
"3": {
"firstName": "Chaitanya",
"lastName": "Sai",
"age": 30
}
}
मुख्य बिंदु
- accumulateAll(): मैप के सभी एंट्रीज को JSONObject में जोड़ता है
- की कन्वर्जन: मैप कीज़ JSON स्ट्रिंग कीज़ बन जाती हैं (toString() के माध्यम से)
- वैल्यू कन्वर्जन: मैप वैल्यूज JSON ऑब्जेक्ट्स बन जाती हैं (बीन कन्वर्जन के माध्यम से)
- डुप्लिकेट कीज़: बाद की वैल्यूज पहले की वैल्यूज को ओवरराइट करती हैं
वैकल्पिक दृष्टिकोण
// JSONObject.fromObject() सीधे
Map<String, Object> map = new HashMap<>();
map.put("name", "John");
map.put("age", 30);
JSONObject json = JSONObject.fromObject(map);
// JSONArray में कन्वर्ट (यदि मैप वैल्यूज कलेक्शन हैं)
Map<String, List<String>> map = ...;
JSONArray array = JSONArray.fromObject(map.values());
आधुनिक विकल्प (Jackson)
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = Map.of("name", "John", "age", 30);
String json = mapper.writeValueAsString(map);
// या सीधे
JsonNode node = mapper.valueToTree(map);
आधुनिक विकल्प (Gson)
Gson gson = new Gson();
Map<String, Object> map = Map.of("name", "John", "age", 30);
String json = gson.toJson(map);
नेस्टेड मैप्स
Map<String, Map<String, Object>> nested = new HashMap<>();
nested.put("user", Map.of("name", "John", "address", Map.of("city", "NYC")));
// JSON: {"user": {"name": "John", "address": {"city": "NYC"}}}
नोट
JSON-lib लिगेसी लाइब्रेरी है। Jackson या Gson नेटिव Map सपोर्ट, बेहतर परफॉरमेंस, टाइप सेफ्टी और सक्रिय मेंटेनेंस प्रदान करते हैं।