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},}
ব্যাখ্যা
- readTree(): JSON স্ট্রিং → JsonNode (ট্রি মডেল)
- treeToValue(): JsonNode → POJO (ডেটা বাইন্ডিং)
- ট্রি মডেল: মেমোরিতে পুরো JSON স্ট্রাকচার ধারণ করে, ফ্লেক্সিবল ম্যানিপুলেশন সম্ভব
তুলনা: তিনটি মডেল
| মডেল | মেথড | ব্যবহার |
|---|---|---|
| Streaming | JsonParser/JsonGenerator | বড় JSON, লো মেমোরি, সিকোয়েনশিয়াল অ্যাক্সেস |
| Tree Model | JsonNode, treeToValue() | মাঝপথে ম্যানিপুলেশন, কন্ডিশনাল পার্সিং |
| Data Binding | readValue(), writeValue() | সিম্পল POJO ↔ JSON, সবচেয়ে সহজ |