কম্পিউটার টিউটোরিয়াল

জ্যাকসন অবজেক্ট মডেল দিয়ে JSON ডেটা ম্যাপিং

ObjectMapper ক্লাস জাভা অবজেক্ট এবং ম্যাচিং JSON কনস্ট্রাক্টের মধ্যে কনভারশন ফাংশনালিটি প্রদান করে। JSON ডেটার অবজেক্ট মডেল রিপ্রেজেন্টেশনকে একটি নির্দিষ্ট জাভা অবজেক্টে ম্যাপ করা যায় ট্রি-লাইক ডেটা স্ট্রাকচার ব্যবহার করে যা পুরো JSON কন্টেন্ট মেমোরিতে রিড এবং স্টোর করে। প্রথম ধাপে JSON ডেটা JsonNode অবজেক্টে রিড করুন, তারপর ObjectMapper ক্লাসের treeToValue() মেথড কল করে অন্য ইনস্ট্যান্সে ম্যাপ করুন।

সিনট্যাক্স

public <T> T treeToValue(TreeNode n, Class<T> valueType) throws JsonProcessingException

উদাহরণ

import java.io.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;

public class JsonTreeModelDemo {
    public static void main(String[] args) throws JsonProcessingException, IOException {
        String jsonString = "{\"id\":\"102\", \"name\":\"Raja Ramesh\", \"address\":[{\"area\":\"Madhapur\", \"city\":\"Hyderabad\"}]}";
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(jsonString);
        User user = objectMapper.treeToValue(jsonNode, User.class);
        System.out.println(user);
    }
}

// User class
class User {
    private int id;
    private String name;
    private Address[] address;
    
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public Address[] getAddress() { return address; }
    public void setAddress(Address[] address) { this.address = address; }
    
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        sb.append(id).append(",");
        sb.append(name).append(",");
        for(Address address1 : address) {
            sb.append(address1).append(",");
        }
        sb.append("}");
        return sb.toString();
    }
}

// Address class
class Address {
    private String area;
    private String city;
    
    public String getArea() { return area; }
    public void setArea(String area) { this.area = area; }
    public String getCity() { return city; }
    public void setCity(String city) { this.city = city; }
    
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        sb.append(area).append(",");
        sb.append(city);
        sb.append("}");
        return sb.toString();
    }
}

আউটপুট

{102,Raja Ramesh,{Madhapur,Hyderabad},}

ব্যাখ্যা

  1. readTree(): JSON স্ট্রিং → JsonNode (ট্রি মডেল)
  2. treeToValue(): JsonNode → POJO (ডেটা বাইন্ডিং)
  3. ট্রি মডেল: মেমোরিতে পুরো JSON স্ট্রাকচার ধারণ করে, ফ্লেক্সিবল ম্যানিপুলেশন সম্ভব

তুলনা: তিনটি মডেল

মডেল মেথড ব্যবহার
Streaming JsonParser/JsonGenerator বড় JSON, লো মেমোরি, সিকোয়েনশিয়াল অ্যাক্সেস
Tree Model JsonNode, treeToValue() মাঝপথে ম্যানিপুলেশন, কন্ডিশনাল পার্সিং
Data Binding readValue(), writeValue() সিম্পল POJO ↔ JSON, সবচেয়ে সহজ
  1. জাভাতে অন্য একটি JSON অবজেক্টের সাবসেট থেকে JSON অবজেক্ট তৈরি করুন

  2. জাভাতে ম্যাপ কে JSON অবজেক্টে রূপান্তর করুন

  3. জাভা POJO কে JSON-এ কনভার্ট করা: Jackson এবং Gson ব্যবহার করে

  4. জাভা Map কে JSON-এ কনভার্ট করা: Jackson, Gson এবং org.json সহ ধাপে ধাপে গাইড