JSONObject হল নেম/ভ্যালু পেয়ারের অনর্ডার্ড কলেকশন, যেখানে Map হল কী-টু-ভ্যালু ম্যাপিংকারী অবজেক্ট। Map-এ ডুপ্লিকেট কী থাকতে পারে না এবং প্রতিটি কী højোচ্চ একটি ভ্যালুতে ম্যাপ করতে পারে। JSON ফরম্যাটে Map সিরিয়ালাইজ/ডিসিরিয়ালাইজ করার জন্য JSON-lib লাইব্রেরি প্রয়োজন। প্রথমে একটি 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 }
}
ব্যাখ্যা
- Map কী (Integer) JSON স্ট্রিং কী-এ কনভার্ট হয় ("1", "2", "3")
- Map ভ্যালু (Employee অবজেক্ট) JSON অবজেক্ট-এ কনভার্ট হয়
- accumulateAll() মেথড ম্যাপের সব এন্ট্রি JSONObject-এ 머্জ করে
আধুনিক বিকল্প (Jackson/Gson)
// Jackson
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(employees);
// Gson
Gson gson = new Gson();
String json = gson.toJson(employees);
// উভয়ই Map → {"1":{...}, "2":{...}} আউটপুট দেয়