Gson-এ JsonReader এবং JsonWriter ক্লাসগুলি সরাসরি JSON ডেটা পঠন (parsing) এবং লেখা (writing) এর জন্য ব্যবহৃত হয়। এগুলি ব্যবহার করলে আপনি JSON ডেটাকে স্ট্রীম আকারে রিড এবং রাইট করতে পারেন, যা বড় JSON ডেটা প্রসেস করার জন্য কার্যকরী হতে পারে কারণ এটি মেমরি প্রয়োজনীয়তা কমায়।
1. JsonReader ব্যবহার
JsonReader একটি স্ট্রীম-ভিত্তিক ক্লাস যা JSON ডেটা পাঠ করার জন্য ব্যবহৃত হয়। এটি আপনার JSON ডেটাকে একটি নির্দিষ্ট স্ট্রীমে (যেমন: ফাইল বা ইনপুট স্ট্রীম) পঠন করতে সহায়ক। JsonReader JSON ডেটাকে token-by-token পড়ে, যা বড় JSON ডেটা প্রক্রিয়াকরণের জন্য একটি মেমরি-সাশ্রয়ী উপায়।
1.1 JsonReader ব্যবহার করার উদাহরণ
import com.google.gson.stream.JsonReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
// JsonReader ব্যবহার করে JSON ডেটা পঠন
try (JsonReader reader = new JsonReader(new StringReader(json))) {
reader.beginObject(); // JSON অবজেক্ট শুরু
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("name")) {
String value = reader.nextString(); // String value পড়া
System.out.println("Name: " + value);
} else if (name.equals("age")) {
int value = reader.nextInt(); // Integer value পড়া
System.out.println("Age: " + value);
} else if (name.equals("city")) {
String value = reader.nextString(); // String value পড়া
System.out.println("City: " + value);
} else {
reader.skipValue(); // অন্য যেকোনো অজানা value স্কিপ করা
}
}
reader.endObject(); // JSON অবজেক্ট শেষ
} catch (IOException e) {
e.printStackTrace();
}
}
}
আউটপুট:
Name: John
Age: 30
City: New York
2. JsonWriter ব্যবহার
JsonWriter ক্লাসটি JSON ডেটা লিখতে ব্যবহৃত হয়। এটি একটি স্ট্রীম-ভিত্তিক ক্লাস যা JSON অবজেক্ট বা অ্যারে রচনা করতে সাহায্য করে।
2.1 JsonWriter ব্যবহার করার উদাহরণ
import com.google.gson.stream.JsonWriter;
import java.io.StringWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
// JSON লিখতে StringWriter তৈরি করা
StringWriter stringWriter = new StringWriter();
try (JsonWriter writer = new JsonWriter(stringWriter)) {
writer.beginObject(); // JSON অবজেক্ট শুরু
writer.name("name").value("John");
writer.name("age").value(30);
writer.name("city").value("New York");
writer.endObject(); // JSON অবজেক্ট শেষ
} catch (IOException e) {
e.printStackTrace();
}
// JSON স্ট্রিং আউটপুট
System.out.println("Serialized JSON: " + stringWriter.toString());
}
}
আউটপুট:
Serialized JSON: {"name":"John","age":30,"city":"New York"}
3. JsonReader এবং JsonWriter এর তুলনা
| ফিচার | JsonReader | JsonWriter |
|---|---|---|
| মূল উদ্দেশ্য | JSON ডেটা পড়া (parsing) | JSON ডেটা লেখা (writing) |
| প্রকৃতি | স্ট্রীম-ভিত্তিক রিডার | স্ট্রীম-ভিত্তিক রাইটার |
| ডেটা পঠন | JSON ডেটা টোকেন-ভিত্তিক পড়া | JSON অবজেক্ট বা অ্যারে রচনা করা |
| ব্যবহার | ইনপুট স্ট্রীম থেকে JSON ডেটা পড়ার জন্য ব্যবহৃত | JSON অবজেক্ট তৈরি করার জন্য ব্যবহৃত |
4. বড় JSON ডেটা প্রক্রিয়াকরণের জন্য JsonReader এবং JsonWriter এর সুবিধা
- মেমরি দক্ষতা:
JsonReaderএবংJsonWriterস্ট্রীম-বেসড হওয়ায় পুরো JSON ডেটা একসাথে মেমরিতে লোড করতে হয় না। এটি বড় JSON ডেটা ব্যবস্থাপনা করার জন্য কার্যকরী হতে পারে। - কাস্টম প্রসেসিং: এই ক্লাসগুলো আপনাকে JSON ডেটাকে টোকেন বা নাম-মানের পেয়ার হিসেবে পড়তে এবং লিখতে দেয়, যা কাস্টম প্রসেসিং এবং ফিল্টারিং সম্ভব করে তোলে।
5. অন্য উদাহরণ: Nested JSON অবজেক্ট পাঠানো
import com.google.gson.stream.JsonReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\", \"address\":{\"street\":\"123 Main St\", \"city\":\"New York\"}}";
// Nested JSON অবজেক্ট পড়ার উদাহরণ
try (JsonReader reader = new JsonReader(new StringReader(json))) {
reader.beginObject(); // JSON অবজেক্ট শুরু
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("name")) {
String value = reader.nextString();
System.out.println("Name: " + value);
} else if (name.equals("address")) {
reader.beginObject(); // Nested অবজেক্ট শুরু
while (reader.hasNext()) {
String addressField = reader.nextName();
if (addressField.equals("street")) {
String street = reader.nextString();
System.out.println("Street: " + street);
} else if (addressField.equals("city")) {
String city = reader.nextString();
System.out.println("City: " + city);
}
}
reader.endObject(); // Nested অবজেক্ট শেষ
}
}
reader.endObject(); // মূল অবজেক্ট শেষ
} catch (IOException e) {
e.printStackTrace();
}
}
}
আউটপুট:
Name: John
Street: 123 Main St
City: New York
সারাংশ
- JsonReader: JSON ডেটা টোকেন-বাই-টোকেন পড়তে ব্যবহার করা হয়, যা মেমরি দক্ষ এবং বড় JSON ডেটা প্রসেস করতে সহায়ক।
- JsonWriter: JSON অবজেক্ট বা অ্যারে লেখার জন্য ব্যবহার করা হয়, যা স্ট্রীম-ভিত্তিক এবং কাস্টম JSON ফরম্যাট তৈরির জন্য উপযোগী।
এভাবে, JsonReader এবং JsonWriter ব্যবহার করে আপনি JSON ডেটা স্ট্রীম আকারে পড়তে এবং লিখতে পারেন, যা বড় JSON ডেটার জন্য কার্যকরী।
Read more