এই টিউটোরিয়ালে আমরা দেখব কীভাবে জাভাতে বিভিন্ন লাইব্রেরি ব্যবহার করে JSON পার্স করা যায়।
JSON-এর পূর্ণরূপ হল JavaScript Object Notation, এবং এটি JavaScript-এর একটি উপসেটের ওপর ভিত্তি করে তৈরি।
ডেটা এক্সচেঞ্জ ফরম্যাট হিসেবে এটি ওয়েব প্রোগ্রামিং-এ ব্যাপকভাবে ব্যবহৃত হয়। এখানে আমরা org.json লাইব্রেরি ব্যবহার করে জাভাতে JSON পার্স করার পদ্ধতি দেখাব।
একটি JSON অবজেক্ট হল একটি অর্ডারহীন কি/ভ্যালু পেয়ার সেট। একটি JSON অ্যারে হল ভ্যালুর একটি অর্ডার্ড কালেকশন। ভ্যালুগুলো নিজেও অবজেক্ট বা অ্যারে হতে পারে।
আমরা নিচের JSON পার্স করব pageName, pagePic এবং post_id এর মান বের করার জন্য:
{
"pageInfo": {
"pageName": "Homepage",
"logo": "https://www.example.com/logo.jpg"
},
"posts": [
{
"post_id": "0123456789",
"actor_id": "1001",
"author_name": "Jane Doe",
"post_title": "How to parse JSON in Java",
"comments": [],
"time_of_post": "1234567890"
}
]
}
org.json ব্যবহার করে JSON পার্স করা
org.json ব্যবহার করে জাভাতে JSON পার্স করতে হলে, লাইব্রেরিটি ডিপেন্ডেন্সি হিসেবে যোগ করতে হবে। এটি Maven রিপোজিটরি থেকে পাওয়া যাবে।
import org.json.JSONArray;
import org.json.JSONObject;
public class ParseJSON {
static String json = "...";
public static void main(String[] args) {
JSONObject obj = new JSONObject(json);
String pageName = obj.getJSONObject("pageInfo").getString("pageName");
System.out.println(pageName);
JSONArray arr = obj.getJSONArray("posts");
for (int i = 0; i < arr.length(); i++) {
String post_id = arr.getJSONObject(i).getString("post_id");
System.out.println(post_id);
}
}
}
দ্রষ্টব্য: কোডের উপরে ... এর জায়গায় JSON স্ট্রিং বসাতে হবে। স্পষ্টতার জন্য উপরের কোড থেকে এটি বাদ দেওয়া হয়েছে।
প্রথমে, JSON স্ট্রিংকে JSON অবজেক্টে কনভার্ট করতে হবে, JSONObject ক্লাস ব্যবহার করে।
এছাড়াও মনে রাখবেন, "pageInfo" একটি JSON অবজেক্ট, তাই আমরা getJSONObject মেথড ব্যবহার করব।
এবং "posts" একটি JSON অ্যারে, তাই আমরা getJSONArray মেথড ব্যবহার করব।
- জাভা অবজেক্ট কে JSON-এ কনভার্ট কীভাবে
- জাভা Map কে JSON-এ কনভার্ট কীভাবে
- JSON এনকোড এবং ডিকোড কীভাবে
Gson ব্যবহার করে JSON পার্স করা
Gson ব্যবহার করে জাভাতে JSON পার্স করতে হলে, লাইব্রেরিটি ডিপেন্ডেন্সি হিসেবে যোগ করতে হবে। Maven রিপোজিটরি থেকে লেটেস্ট ভার্সন পাওয়া যাবে।
নিচের উদাহরণটি উপরের JSON Gson-এ পার্স করার পদ্ধতি দেখায়:
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class ParseJSON {
static String json = "...";
public static void main(String[] args) {
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
String pageName = jsonObject.getAsJsonObject("pageInfo").get("pageName").getAsString();
System.out.println(pageName);
JsonArray arr = jsonObject.getAsJsonArray("posts");
for (int i = 0; i < arr.size(); i++) {
String post_id = arr.get(i).getAsJsonObject().get("post_id").getAsString();
System.out.println(post_id);
}
}
}
পূর্বের উদাহরণের মতো, ... এর জায়গায় JSON স্ট্রিং বসাতে হবে।
JsonPATH ব্যবহার করে JSON পার্স করা
উপরের দুটি উদাহরণে পুরো JSON অবজেক্টকে জাভা অবজেক্টে ডিসিরিয়ালাইজ করার প্রয়োজন পড়ে। আরেকটি বিকল্প হল JsonPATH ব্যবহার করা, যা JSON-এর জন্য XPath-এর মতো কাজ করে এবং JSON অবজেক্ট ট্রাভার্স করতে দেয়।
পূর্বের মতো, JsonPATH ডিপেন্ডেন্সি হিসেবে যোগ করতে হবে, যা Maven রিপোজিটরি থেকে পাওয়া যাবে।
উদাহরণস্বরূপ, উপরের JSON পার্স করতে আমরা ব্যবহার করতে পারি:
import com.jayway.jsonpath.JsonPath;
public class ParseJSON {
static String json = "...";
public static void main(String[] args) {
String pageName = JsonPath.read(json, "$.pageInfo.pageName");
System.out.println(pageName);
Integer posts = JsonPath.read(json, "$.posts.length()");
for(int i = 0; i < posts; i++) {
String post_id = JsonPath.read(json, "$.posts[" + i + "].post_id");
System.out.println(post_id);
}
}
}