জেসুপ (JSoup) মূলত HTML পার্সিং এবং ওয়েব স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হলেও, এটি JSON ডেটা এক্সট্র্যাকশন এবং ম্যানিপুলেশনেও সহায়তা করতে পারে। যদিও জেসুপ নিজে JSON ডেটা প্রক্রিয়া করতে ডিজাইন করা হয়নি, তবে এটি ওয়েব পেজে থাকা JSON ডেটা এক্সট্র্যাক্ট এবং ম্যানিপুলেট করার জন্য খুবই কার্যকরী হতে পারে। সাধারণত, ওয়েব পেজের মধ্যে JSON ডেটা স্ক্র্যাপ করা হয় এবং সেগুলো প্রক্রিয়া করে প্রয়োজনীয় তথ্য বের করা হয়।
JSON ডেটা এক্সট্র্যাকশন এবং ম্যানিপুলেশন
JSON ডেটা এক্সট্র্যাকশন
ওয়েব পেজের মধ্যে JSON ডেটা থাকলে, আপনি জেসুপের মাধ্যমে HTML ডকুমেন্টের মধ্যে থেকে JSON ডেটা এক্সট্র্যাক্ট করতে পারেন। এটি সাধারণত <script> ট্যাগে ইনলাইন JSON ডেটা থাকে অথবা ওয়েব পেজে একটি API কল থেকে পাওয়া যায়। একবার JSON ডেটা পাওয়া গেলে, তা প্রক্রিয়া করতে সহজ হয়ে যায়।
JSON ডেটা ম্যানিপুলেশন
একবার JSON ডেটা এক্সট্র্যাক্ট হলে, আপনি সেটি ম্যানিপুলেট করতে Java লাইব্রেরি যেমন org.json বা Gson ব্যবহার করতে পারেন। জেসুপ নিজে JSON ম্যানিপুলেশন করার জন্য সরাসরি ডিজাইন করা হয়নি, তবে JSON ডেটা এক্সট্র্যাক্ট করার পর Java লাইব্রেরি ব্যবহার করে সেটিকে ম্যানিপুলেট করা সম্ভব।
জেসুপ দিয়ে JSON ডেটা এক্সট্র্যাকশন
নিচে একটি উদাহরণ দেওয়া হয়েছে, যেখানে জেসুপ ব্যবহার করে ওয়েব পেজ থেকে JSON ডেটা এক্সট্র্যাক্ট করা হচ্ছে:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.json.JSONObject;
import java.io.IOException;
public class JsoupJsonExtraction {
public static void main(String[] args) {
try {
// ওয়েব পেজের HTML ডকুমেন্ট ডাউনলোড করা
String url = "http://example.com/page";
Document doc = Jsoup.connect(url).get();
// JSON ডেটা ধারণকারী <script> ট্যাগ নির্বাচন
Element script = doc.select("script[type=application/json]").first();
if (script != null) {
// JSON ডেটা এক্সট্র্যাক্ট করা
String jsonData = script.data();
// JSON অবজেক্ট তৈরি করা
JSONObject jsonObject = new JSONObject(jsonData);
// JSON ডেটা প্রিন্ট করা
System.out.println(jsonObject.toString(4)); // pretty print
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
এই কোডে:
- HTML ডকুমেন্ট ডাউনলোড করা:
Jsoup.connect(url).get()এর মাধ্যমে ওয়েব পেজের HTML ডকুমেন্ট ডাউনলোড করা হচ্ছে। - JSON ডেটা এক্সট্র্যাক্ট করা:
<script>ট্যাগের মধ্যে থাকা JSON ডেটাdoc.select("script[type=application/json]").first()এর মাধ্যমে এক্সট্র্যাক্ট করা হচ্ছে। - JSON অবজেক্ট তৈরি করা: এক্সট্র্যাক্ট করা JSON স্ট্রিংটি
new JSONObject(jsonData)দিয়ে একটি JSON অবজেক্টে কনভার্ট করা হচ্ছে। - JSON প্রিন্ট করা:
jsonObject.toString(4)দিয়ে JSON ডেটা সুন্দরভাবে প্রিন্ট করা হচ্ছে (pretty print)।
JSON ডেটা ম্যানিপুলেশন
যখন JSON ডেটা এক্সট্র্যাক্ট হয়ে যাবে, তখন আপনি Java এর JSON লাইব্রেরি যেমন org.json বা Gson ব্যবহার করে সেই ডেটা ম্যানিপুলেট করতে পারবেন। যেমন, JSON অবজেক্টে নতুন ডেটা যোগ করা, পুরনো ডেটা আপডেট করা বা ডেটা ডিলিট করা।
উদাহরণস্বরূপ, যদি আপনি org.json লাইব্রেরি ব্যবহার করেন, তাহলে JSON ম্যানিপুলেশন করতে পারেন নিচের মত:
import org.json.JSONObject;
public class JsonManipulation {
public static void main(String[] args) {
// JSON অবজেক্ট তৈরি
JSONObject jsonObject = new JSONObject();
// JSON ডেটা যোগ করা
jsonObject.put("name", "John");
jsonObject.put("age", 30);
// JSON ডেটা পরিবর্তন
jsonObject.put("age", 31);
// JSON ডেটা ডিলিট
jsonObject.remove("name");
// ফলস্বরূপ JSON প্রিন্ট
System.out.println(jsonObject.toString(4)); // pretty print
}
}
এখানে:
jsonObject.put()ব্যবহার করে JSON অবজেক্টে নতুন ডেটা যোগ করা হয়েছে।jsonObject.remove()দিয়ে একটি কীগুলির মান মুছে ফেলা হয়েছে।- JSON ডেটার পরিবর্তন এবং মুছে ফেলা প্রিন্ট করা হয়েছে
jsonObject.toString(4)দিয়ে।
সারাংশ
জেসুপ (JSoup) দিয়ে HTML পেজ থেকে JSON ডেটা এক্সট্র্যাকশন করা খুবই সহজ। আপনি Jsoup.connect(url).get() এর মাধ্যমে HTML পেজ ডাউনলোড করে, সেখানে থাকা <script> ট্যাগের মধ্যে থাকা JSON ডেটা এক্সট্র্যাক্ট করতে পারেন। এক্সট্র্যাক্ট করা JSON ডেটা পরবর্তীতে Java JSON লাইব্রেরি ব্যবহার করে ম্যানিপুলেট করা সম্ভব। জেসুপ HTML স্ক্র্যাপিং এবং JSON ডেটা এক্সট্র্যাকশনের জন্য একটি শক্তিশালী টুল, যা ওয়েব পেজ থেকে তথ্য সংগ্রহ এবং প্রক্রিয়া করতে সহায়তা করে।
জেসুপ (JSoup) সাধারণত HTML পার্সিং এবং ওয়েব স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হয়, তবে এটি JSON ডেটা ফেচ এবং পার্সিংয়ের জন্য সরাসরি ডিজাইন করা হয়নি। তবে, JSON ডেটা হ্যান্ডল করার জন্য আপনি Java এর অন্যান্য লাইব্রেরি ব্যবহার করতে পারেন যেমন Jackson বা Gson। আপনি যদি কোনো ওয়েবসাইট থেকে JSON ডেটা এক্সট্র্যাক্ট করতে চান, তবে সাধারণত HTTP রিকোয়েস্ট পাঠাতে হবে এবং তারপর সেই JSON ডেটাকে পার্স করতে হবে।
এখানে দেখানো হবে কিভাবে HTTP রিকোয়েস্ট পাঠিয়ে JSON ডেটা ফেচ করা এবং JSON ডেটা পার্স করা যায়।
JSON ডেটা Fetch এবং Parse করার জন্য লাইব্রেরি
১. Jsoup দিয়ে JSON ডেটা Fetch করা
যেহেতু Jsoup HTML ডকুমেন্ট পার্স করতে সক্ষম, এটি JSON ডেটা ফেচ করার জন্যও HTTP রিকোয়েস্ট পাঠানোর কাজ করতে পারে। তবে JSON ডেটা হ্যান্ডল করার জন্য Jackson বা Gson লাইব্রেরি বেশি উপযুক্ত, কারণ এই লাইব্রেরিগুলি JSON ডেটা পার্স এবং সিরিয়ালাইজ করার জন্য তৈরি।
২. Jackson বা Gson দিয়ে JSON Parse করা
এখানে আমরা Jackson লাইব্রেরি ব্যবহার করে JSON ডেটা ফেচ এবং পার্স করার উদাহরণ দেখব।
Jackson লাইব্রেরি দিয়ে JSON ডেটা Fetch এবং Parse করা
Jackson একটি জনপ্রিয় লাইব্রেরি যা JSON ডেটা পার্স এবং সিরিয়ালাইজ করার জন্য ব্যবহৃত হয়। Jsoup দিয়ে HTTP রিকোয়েস্ট পাঠিয়ে JSON ডেটা ফেচ করা হবে এবং Jackson দিয়ে সেই JSON ডেটা পার্স করা হবে।
উদাহরণ: Jsoup দিয়ে JSON ডেটা Fetch এবং Jackson দিয়ে Parse করা
প্রথমে, Jackson লাইব্রেরি আপনার প্রজেক্টে যোগ করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
এখন, নিচে একটি উদাহরণ দেওয়া হল যেখানে Jsoup দিয়ে JSON ডেটা ফেচ করা হয়েছে এবং Jackson দিয়ে পার্স করা হয়েছে:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class JsoupJsonFetchExample {
public static void main(String[] args) {
try {
// JSON ডেটা ফেচ করা Jsoup দিয়ে
String jsonUrl = "https://api.example.com/data";
Document doc = Jsoup.connect(jsonUrl).ignoreContentType(true).get();
// JSON ডেটা হিসেবে কন্টেন্ট এক্সট্র্যাক্ট করা
String jsonResponse = doc.text();
System.out.println("JSON Response: " + jsonResponse);
// Jackson দিয়ে JSON ডেটা পার্স করা
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonResponse);
// JSON ডেটার অংশ এক্সট্র্যাক্ট করা
String value = rootNode.path("key").asText();
System.out.println("Extracted Value: " + value);
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা:
- Jsoup দিয়ে JSON ডেটা ফেচ করা:
Jsoup.connect(jsonUrl).ignoreContentType(true).get()এই লাইনটি ব্যবহার করে আমরা JSON ডেটা ফেচ করেছি। এখানে.ignoreContentType(true)ব্যবহার করা হয়েছে, কারণ Jsoup সাধারণত HTML কনটেন্ট পার্স করে, কিন্তু JSON ডেটা পার্স করার জন্য এই অপশনটি ব্যবহার করতে হয়। - Jackson দিয়ে JSON ডেটা পার্স করা:
ObjectMapperব্যবহার করে JSON ডেটা পার্স করা হয়েছে এবংJsonNodeএর মাধ্যমে নির্দিষ্ট কনটেন্ট যেমন"key"এর ভ্যালু এক্সট্র্যাক্ট করা হয়েছে।
Gson লাইব্রেরি দিয়ে JSON ডেটা Fetch এবং Parse করা
যদি আপনি Jackson না ব্যবহার করে Gson ব্যবহার করতে চান, তবে এটি একই কাজ করতে পারে। Gson হল আরেকটি জনপ্রিয় লাইব্রেরি যা JSON ডেটা পার্স এবং সিরিয়ালাইজ করতে ব্যবহৃত হয়।
উদাহরণ: Jsoup দিয়ে JSON ডেটা Fetch এবং Gson দিয়ে Parse করা
প্রথমে, Gson লাইব্রেরি আপনার প্রজেক্টে যোগ করতে হবে। Maven ব্যবহার করলে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
</dependency>
এখন, Gson দিয়ে JSON পার্স করার উদাহরণ:
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class JsoupGsonFetchExample {
public static void main(String[] args) {
try {
// JSON ডেটা ফেচ করা Jsoup দিয়ে
String jsonUrl = "https://api.example.com/data";
Document doc = Jsoup.connect(jsonUrl).ignoreContentType(true).get();
// JSON ডেটা হিসেবে কন্টেন্ট এক্সট্র্যাক্ট করা
String jsonResponse = doc.text();
System.out.println("JSON Response: " + jsonResponse);
// Gson দিয়ে JSON ডেটা পার্স করা
JsonObject jsonObject = JsonParser.parseString(jsonResponse).getAsJsonObject();
// JSON ডেটার অংশ এক্সট্র্যাক্ট করা
String value = jsonObject.get("key").getAsString();
System.out.println("Extracted Value: " + value);
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা:
- Jsoup দিয়ে JSON ডেটা ফেচ করা: একইভাবে, Jsoup ব্যবহার করে JSON ডেটা ফেচ করা হয়েছে এবং
.ignoreContentType(true)অপশনটি দিয়ে JSON কনটেন্ট প্যার্স করা হয়েছে। - Gson দিয়ে JSON পার্স করা:
JsonParser.parseString()মেথড দিয়ে JSON ডেটা পার্স করা হয়েছে এবংJsonObjectব্যবহার করে নির্দিষ্ট কনটেন্ট যেমন"key"এর ভ্যালু এক্সট্র্যাক্ট করা হয়েছে।
সারাংশ
জেসুপ (JSoup) মূলত HTML পার্সিং এবং ওয়েব স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হলেও, এটি JSON ডেটা ফেচ করার জন্য HTTP রিকোয়েস্ট পাঠাতে সক্ষম। তবে JSON ডেটা পার্স করার জন্য Jackson বা Gson লাইব্রেরি ব্যবহার করা প্রয়োজন। Jsoup দিয়ে JSON ডেটা ফেচ করার পর, Jackson বা Gson দিয়ে সেই ডেটা পার্স এবং এক্সট্র্যাক্ট করা সম্ভব।
JSoup মূলত HTML পার্সিং এবং ওয়েব স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হলেও, JSON API থেকে ডেটা সংগ্রহ করতে এটি সরাসরি ব্যবহৃত হয় না। তবে, JSoup এর মাধ্যমে আপনি HTML ডকুমেন্ট পার্স করতে পারলেও JSON ডেটা এক্সট্র্যাক্ট করার জন্য আপনাকে অন্যান্য লাইব্রেরি যেমন HttpURLConnection, OkHttp, অথবা Retrofit ব্যবহার করতে হবে।
নিচে, JSON API থেকে ডেটা ফেচ করার জন্য কিছু পদ্ধতি এবং উদাহরণ দেয়া হলো।
JSON API থেকে ডেটা ফেচ করার জন্য পদ্ধতি
1. HttpURLConnection ব্যবহার করা
আপনি HttpURLConnection ব্যবহার করে JSON API থেকে ডেটা ফেচ করতে পারেন। এই পদ্ধতিতে একটি HTTP GET রিকোয়েস্ট পাঠানো হয় এবং তারপর API থেকে পাওয়া JSON রেসপন্স প্রসেস করা হয়।
উদাহরণ:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class JsonFetchExample {
public static void main(String[] args) throws Exception {
String url = "https://jsonplaceholder.typicode.com/posts"; // JSON API URL
// HTTP রিকোয়েস্ট তৈরি
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "application/json");
// রেসপন্স পড়া
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// JSON রেসপন্স প্রিন্ট
System.out.println(response.toString());
}
}
এখানে, HttpURLConnection ব্যবহার করে JSON API থেকে ডেটা ফেচ করা হয়েছে। API থেকে পাওয়া রেসপন্স BufferedReader দিয়ে পড়া হয়েছে এবং শেষে JSON ডেটা প্রিন্ট করা হয়েছে।
2. OkHttp ব্যবহার করা
OkHttp একটি শক্তিশালী HTTP ক্লায়েন্ট লাইব্রেরি, যা JSON API থেকে ডেটা ফেচ করতে ব্যবহৃত হতে পারে। এটি আরও দ্রুত এবং কার্যকরী।
উদাহরণ:
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkHttpJsonFetchExample {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
// API URL
String url = "https://jsonplaceholder.typicode.com/posts";
// রিকোয়েস্ট তৈরি
Request request = new Request.Builder().url(url).build();
// রেসপন্স পাওয়া
try (Response response = client.newCall(request).execute()) {
String responseData = response.body().string();
System.out.println(responseData); // JSON ডেটা প্রিন্ট
}
}
}
এখানে OkHttp লাইব্রেরি ব্যবহার করে JSON API থেকে ডেটা ফেচ করা হয়েছে। Response.body().string() দিয়ে API থেকে পাওয়া JSON ডেটা সংগ্রহ করা হয়েছে।
3. JSoup দিয়ে JSON পার্স করা (যদি JSON HTML এর মধ্যে থাকে)
যদিও JSoup প্রধানত HTML পার্সিংয়ের জন্য ব্যবহৃত হয়, তবে আপনি যদি কোনো HTML ডকুমেন্টে থাকা JSON ডেটাকে এক্সট্র্যাক্ট করতে চান, তাহলে JSoup ব্যবহার করা যেতে পারে।
উদাহরণ:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class JsoupJsonParsingExample {
public static void main(String[] args) throws Exception {
String html = "<html><body><script type='application/json'>[{\"id\": 1, \"title\": \"Post 1\"}, {\"id\": 2, \"title\": \"Post 2\"}]</script></body></html>";
// HTML পার্সিং
Document doc = Jsoup.parse(html);
// JSON ডেটা এক্সট্র্যাক্ট করা
Elements jsonData = doc.select("script[type=application/json]");
String json = jsonData.html();
System.out.println(json); // JSON ডেটা প্রিন্ট
}
}
এখানে, JSoup ব্যবহার করে একটি HTML ডকুমেন্ট থেকে JSON ডেটা এক্সট্র্যাক্ট করা হয়েছে। এটি তখন JSON ডেটা হিসেবে প্রক্রিয়া করা যেতে পারে।
সারাংশ
JSoup সরাসরি JSON API থেকে ডেটা ফেচ করার জন্য ব্যবহৃত হয় না। তবে, HttpURLConnection বা OkHttp এর মাধ্যমে আপনি JSON API থেকে ডেটা ফেচ করতে পারেন। এর পরে, JSoup ব্যবহার করে যদি HTML ডকুমেন্টে কোনো JSON ডেটা থাকে, সেটি এক্সট্র্যাক্ট করা সম্ভব। JSON ডেটা ফেচ করার জন্য বিভিন্ন HTTP ক্লায়েন্ট লাইব্রেরি যেমন HttpURLConnection বা OkHttp ব্যবহার করা সবচেয়ে উপযুক্ত পদ্ধতি।
JSoup একটি শক্তিশালী টুল HTML ডকুমেন্ট ম্যানিপুলেশন এবং ডেটা এক্সট্র্যাক্ট করার জন্য, তবে JSON ডেটা এক্সট্র্যাক্ট এবং ম্যানিপুলেশন করার জন্য JSoup ব্যবহৃত হয় না। JSON (JavaScript Object Notation) একটি সাধারণ ডেটা বিনিময় ফরম্যাট যা স্ট্রাকচারড ডেটা পরিবহন করতে ব্যবহৃত হয়। JSON ডেটা এক্সট্র্যাক্ট এবং ম্যানিপুলেট করতে Jackson, Gson, বা org.json এর মতো লাইব্রেরি ব্যবহৃত হয়। এই লাইব্রেরিগুলি JSON ডেটা প্রক্রিয়া করতে খুব কার্যকর।
এখানে, JSoup এর মাধ্যমে ডাইনামিক ডেটা এক্সট্র্যাক্ট করার প্রক্রিয়া এবং JSON ডেটার মাধ্যমে এক্সট্র্যাক্ট এবং ম্যানিপুলেশন করার জন্য প্রয়োজনীয় টিপস দেওয়া হবে।
JSON ডেটা এক্সট্র্যাক্ট এবং ম্যানিপুলেশন
JSON ডেটা এক্সট্র্যাক্ট করা
যদি আপনি একটি API বা ওয়েবসাইট থেকে JSON ডেটা এক্সট্র্যাক্ট করতে চান, তবে আপনাকে প্রথমে সেই JSON ডেটাটি পার্স করতে হবে। JSON ডেটার একটি সাধারণ কাঠামো থাকে, এবং Java-তে JSON ডেটা পার্স করতে বিভিন্ন লাইব্রেরি রয়েছে। এখানে একটি উদাহরণ দেওয়া হলো যেখানে Jackson লাইব্রেরি ব্যবহার করা হয়েছে JSON ডেটা এক্সট্র্যাক্ট এবং ম্যানিপুলেট করার জন্য।
Jackson ব্যবহার করে JSON এক্সট্র্যাক্ট করা:
Jackson ডিপেন্ডেন্সি (Maven):
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version> <!-- সর্বশেষ সংস্করণ -->
</dependency>
উদাহরণ:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class JsonExample {
public static void main(String[] args) throws IOException {
// JSON ডেটা স্ট্রিং
String jsonData = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }";
// ObjectMapper ব্যবহার করে JSON পার্স করা
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonData);
// JSON ডেটা এক্সট্র্যাক্ট করা
String name = rootNode.path("name").asText();
int age = rootNode.path("age").asInt();
String city = rootNode.path("city").asText();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
}
}
এখানে, Jackson লাইব্রেরি ব্যবহার করে JSON ডেটা পার্স করা হয়েছে এবং ডেটার বিভিন্ন অংশ যেমন name, age, এবং city এক্সট্র্যাক্ট করা হয়েছে।
JSON ডেটা ম্যানিপুলেশন
JSON ডেটাতে পরিবর্তন করার জন্য আমরা Jackson বা Gson লাইব্রেরি ব্যবহার করতে পারি। নিচে Jackson ব্যবহার করে JSON ডেটাতে পরিবর্তন (Manipulation) করার একটি উদাহরণ দেওয়া হলো।
Jackson এর মাধ্যমে JSON ম্যানিপুলেশন:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class JsonManipulationExample {
public static void main(String[] args) throws IOException {
// JSON ডেটা স্ট্রিং
String jsonData = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }";
// ObjectMapper ব্যবহার করে JSON পার্স করা
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonData);
// JSON ডেটা ম্যানিপুলেশন
((ObjectNode) rootNode).put("name", "Jane"); // name পরিবর্তন
((ObjectNode) rootNode).put("age", 25); // age পরিবর্তন
// নতুন JSON ডেটা প্রিন্ট করা
System.out.println(rootNode.toString()); // {"name":"Jane","age":25,"city":"New York"}
}
}
এখানে, ObjectNode ব্যবহার করে JSON ডেটার name এবং age ফিল্ডের মান পরিবর্তন করা হয়েছে। Jackson লাইব্রেরি JSON ডেটার কাঠামো এবং মান পরিবর্তন করতে সাহায্য করে।
JSoup দিয়ে JSON ডেটা এক্সট্র্যাক্ট করা
যেহেতু JSoup HTML ডকুমেন্ট ম্যানিপুলেশন এবং এক্সট্র্যাকশনের জন্য ব্যবহৃত হয়, JSON ডেটার সাথে সরাসরি কাজ করার জন্য JSoup ব্যবহার করা সম্ভব নয়। তবে, যদি JSON ডেটা HTML পেজে এম্বেডেড থাকে (যেমন <script> ট্যাগে JSON ডেটা রাখা হয়), তখন আপনি JSoup ব্যবহার করে JSON ডেটাকে HTML ডকুমেন্ট থেকে এক্সট্র্যাক্ট করতে পারেন।
উদাহরণ:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupJsonExample {
public static void main(String[] args) throws Exception {
// HTML ডকুমেন্ট যেখানে JSON ডেটা রয়েছে
String html = "<html><head><title>Example</title></head><body><script type='application/json'>"
+ "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"
+ "</script></body></html>";
// HTML পার্সিং
Document doc = Jsoup.parse(html);
// <script> ট্যাগ থেকে JSON ডেটা এক্সট্র্যাক্ট করা
Element script = doc.select("script[type=application/json]").first();
String jsonData = script.html();
System.out.println("Extracted JSON: " + jsonData);
}
}
এখানে, JSoup ব্যবহার করে HTML ডকুমেন্টের মধ্যে থাকা JSON ডেটা <script> ট্যাগ থেকে এক্সট্র্যাক্ট করা হয়েছে।
সারাংশ
JSoup মূলত HTML ডকুমেন্ট ম্যানিপুলেশনের জন্য ব্যবহৃত হয়, তবে JSON ডেটার জন্য Jackson বা Gson এর মতো লাইব্রেরি ব্যবহৃত হয়। JSON ডেটা এক্সট্র্যাক্ট এবং ম্যানিপুলেট করতে Jackson এবং Gson দুটি শক্তিশালী টুল। যদি JSON ডেটা HTML পেজে এম্বেডেড থাকে, তবে JSoup এর মাধ্যমে JSON ডেটা এক্সট্র্যাক্ট করা সম্ভব। JSON ডেটার স্ট্রাকচার এবং কার্যকরী ব্যবহারের জন্য Jackson লাইব্রেরি অধিক জনপ্রিয়।
JSoup সাধারণত HTML parsing এবং web scraping এর জন্য ব্যবহৃত হলেও, এটি JSON ডাটা হ্যান্ডেল করতে ব্যবহৃত হয় না। তবে, আপনি যদি একটি ওয়েব API থেকে JSON রেসপন্স গ্রহণ করতে চান, JSoup তার মূল উদ্দেশ্য নয়। JSON ডাটা হ্যান্ডেল করতে Java এ সাধারণত HttpURLConnection, HttpClient বা JSON লাইব্রেরি যেমন Jackson বা Gson ব্যবহৃত হয়। তবে, JSoup এর মাধ্যমে HTML পেজের ডাটা এক্সট্র্যাক্ট করার পর যদি JSON রেসপন্স পাওয়া যায়, সেটি JSON লাইব্রেরি ব্যবহার করে হ্যান্ডেল করা যায়।
এখানে আমরা দেখব কীভাবে JSoup ব্যবহার করে API থেকে JSON ডাটা নেওয়া এবং সঠিকভাবে হ্যান্ডেল করা যায়। উদাহরণস্বরূপ, আমরা একটি API থেকে JSON রেসপন্স প্রাপ্ত করব এবং সেগুলোর উপর কাজ করব।
JSON Response Handling: উদাহরণ
১. HTTP GET Request দিয়ে JSON ডাটা ফেচ করা
আমরা একটি HTTP GET রিকোয়েস্ট পাঠাবো এবং তার মাধ্যমে JSON রেসপন্স পাবো। এর জন্য JSoup দিয়ে প্রথমে HTTP রিকোয়েস্ট পাঠানো হবে এবং তারপর JSON ডাটা নির্দিষ্ট লাইব্রেরি ব্যবহার করে পার্স করা হবে।
উদাহরণ: JSON Response ফেচিং
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.json.JSONObject;
import org.json.JSONArray;
public class JsoupJsonResponse {
public static void main(String[] args) throws Exception {
// API URL থেকে JSON ডাটা ফেচ করা
String url = "https://jsonplaceholder.typicode.com/posts/1";
// JSoup দিয়ে HTTP GET Request পাঠানো এবং JSON রেসপন্স ফেচ করা
Document doc = Jsoup.connect(url).ignoreContentType(true).get();
// JSON রেসপন্স পেতে পুরো ডকুমেন্টের টেক্সট
String jsonResponse = doc.text();
// JSON রেসপন্স পার্স করা
JSONObject jsonObject = new JSONObject(jsonResponse);
// JSON অবজেক্ট থেকে ডাটা এক্সট্র্যাক্ট করা
int id = jsonObject.getInt("id");
String title = jsonObject.getString("title");
String body = jsonObject.getString("body");
// JSON ডাটা প্রদর্শন করা
System.out.println("ID: " + id);
System.out.println("Title: " + title);
System.out.println("Body: " + body);
}
}
এখানে, আমরা Jsoup.connect(url).ignoreContentType(true).get(); ব্যবহার করে API থেকে JSON ডাটা ফেচ করছি। ignoreContentType(true) দিয়ে JSoup জানিয়ে দেওয়া হচ্ছে যে এটি JSON ডাটা ফেচ করছে, যাতে JSoup HTML পেজের পরিবর্তে JSON ডাটা গ্রহণ করতে পারে।
jsonResponse এর মাধ্যমে সম্পূর্ণ JSON রেসপন্সটি স্ট্রিং আকারে নেওয়া হচ্ছে। তারপর, JSONObject ব্যবহার করে JSON ডাটা পার্স করা হচ্ছে এবং getInt(), getString() মেথড দিয়ে নির্দিষ্ট ফিল্ডের মান নেওয়া হচ্ছে।
আউটপুট:
ID: 1
Title: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
Body: quia et suscipit\nsuscipit...
২. JSON Array থেকে ডাটা এক্সট্র্যাক্ট করা
অনেক সময় JSON রেসপন্স একটি অ্যারে আকারে ফিরে আসে। এই ধরনের JSON Array থেকে ডাটা এক্সট্র্যাক্ট করা তেমন কঠিন নয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে আমরা JSON Array থেকে ডাটা এক্সট্র্যাক্ট করছি।
উদাহরণ: JSON Array থেকে ডাটা এক্সট্র্যাক্ট করা
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.json.JSONArray;
import org.json.JSONObject;
public class JsoupJsonArrayResponse {
public static void main(String[] args) throws Exception {
// API URL থেকে JSON অ্যারে ফেচ করা
String url = "https://jsonplaceholder.typicode.com/posts";
// JSoup দিয়ে HTTP GET Request পাঠানো এবং JSON রেসপন্স ফেচ করা
Document doc = Jsoup.connect(url).ignoreContentType(true).get();
// JSON রেসপন্স পেতে পুরো ডকুমেন্টের টেক্সট
String jsonResponse = doc.text();
// JSON অ্যারে পার্স করা
JSONArray jsonArray = new JSONArray(jsonResponse);
// JSON অ্যারে থেকে প্রতিটি অবজেক্টের ডাটা এক্সট্র্যাক্ট করা
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
int id = jsonObject.getInt("id");
String title = jsonObject.getString("title");
// প্রতিটি পোস্টের ID এবং Title প্রদর্শন করা
System.out.println("ID: " + id);
System.out.println("Title: " + title);
}
}
}
এখানে, আমরা একটি JSON অ্যারে ফেচ করছি এবং এর মধ্যে থাকা প্রতিটি অবজেক্ট থেকে ডাটা এক্সট্র্যাক্ট করছি। JSONArray এর মাধ্যমে JSON অ্যারের উপর লুপ করে প্রতিটি অবজেক্টের ভেতরের ডাটা তুলে নেওয়া হয়েছে।
আউটপুট:
ID: 1
Title: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
ID: 2
Title: qui est esse
ID: 3
Title: ea molestias quasi exercitationem repellat qui ipsa sit aut
...
সারাংশ
JSoup সাধারণত HTML ডকুমেন্ট পার্সিং এবং স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হলেও, এটি JSON ডাটা হ্যান্ডেল করার জন্য সরাসরি ব্যবহৃত হয় না। তবে, JSoup এর মাধ্যমে API থেকে JSON রেসপন্স নিয়ে ignoreContentType(true) সেট করে JSON ডাটা গ্রহণ করা সম্ভব। এরপর, JSON লাইব্রেরি (যেমন JSONObject, JSONArray) ব্যবহার করে JSON ডাটা পার্স এবং ম্যানিপুলেট করা হয়। JSoup এবং JSON লাইব্রেরি ব্যবহার করে API থেকে ডাটা এক্সট্র্যাক্ট করা এবং পরবর্তী প্রক্রিয়াগুলি করা সহজ এবং কার্যকর।
Read more