Gson লাইব্রেরি Streaming API প্রদান করে, যা large JSON files বা large JSON data streams প্রসেস করার জন্য খুবই কার্যকরী। এই পদ্ধতিটি memory efficiency বৃদ্ধি করে এবং performance উন্নত করে, কারণ এটি JSON ডেটার পুরো কন্টেন্ট একবারে মেমরিতে লোড না করে, ডেটা স্ট্রিম আকারে প্রসেস করে।
Gson Streaming API
Gson-এর Streaming API দুটি মূল ক্লাসের মাধ্যমে কাজ করে:
- JsonReader (ডেটা পড়ার জন্য)
- JsonWriter (ডেটা লেখার জন্য)
এই API গুলি আপনাকে JSON file বা JSON data stream এর মধ্যে token-based অ্যাক্সেস দেয়, যার মাধ্যমে ডেটা প্রক্রিয়া করা হয় একে একে। অর্থাৎ, পুরো JSON ডেটা একবারে মেমরিতে লোড করার পরিবর্তে, শুধুমাত্র প্রয়োজনীয় অংশগুলি পাঠ করা বা লেখা হয়।
Streaming API এর সুবিধা:
- Memory Efficiency: খুব বড় JSON ডেটা ফাইল গুলি একসাথে মেমরিতে লোড না করে ধীরে ধীরে পড়া হয়, ফলে মেমরি ব্যবহারে কার্যকরী হয়।
- Performance: বড় JSON ফাইলগুলি একে একে পড়ে এবং লেখে, তাই কম মেমরি ব্যবহারের ফলে প্রক্রিয়াকরণের গতি দ্রুত হয়।
- Scalability: বড় JSON ডেটা সেট হ্যান্ডল করার জন্য এটি অত্যন্ত উপযোগী।
JsonReader ব্যবহার করে Large JSON File পড়া
JsonReader কনটেক্সটে স্ট্রিমিং অপারেশন করে, যা আপনাকে JSON ফাইলের প্রতিটি টোকেনের উপর একে একে কাজ করার সুযোগ দেয়। এটা পুরো JSON একবারে মেমরিতে লোড না করে ধীরে ধীরে পড়ে।
উদাহরণ: JsonReader দিয়ে Large JSON File পড়া
ধরা যাক, আমাদের কাছে একটি বড় JSON ফাইল রয়েছে যা অনেকগুলো Person অবজেক্ট ধারণ করে, এবং আমাদের তা streaming এর মাধ্যমে পড়তে হবে।
import com.google.gson.stream.JsonReader;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (JsonReader reader = new JsonReader(new FileReader("largeFile.json"))) {
reader.beginArray(); // Start reading the JSON array
while (reader.hasNext()) {
reader.beginObject(); // Start reading the next object
String name = null;
int age = 0;
while (reader.hasNext()) {
String fieldName = reader.nextName();
if (fieldName.equals("name")) {
name = reader.nextString();
} else if (fieldName.equals("age")) {
age = reader.nextInt();
} else {
reader.skipValue(); // Skip unknown fields
}
}
System.out.println("Name: " + name + ", Age: " + age);
reader.endObject(); // End the current object
}
reader.endArray(); // End the JSON array
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা:
JsonReaderএর মাধ্যমে largeFile.json ফাইলটি ওপেন করা হয়েছে।- beginArray() এবং endArray() দিয়ে JSON এর অ্যারে শুরু এবং শেষ করা হচ্ছে।
- প্রতিটি JSON object পড়তে, beginObject() এবং endObject() ব্যবহার করা হচ্ছে।
- প্রতিটি fieldName এর জন্য nextString(), nextInt(), বা skipValue() এর মাধ্যমে প্রয়োজনীয় ডেটা অ্যাক্সেস করা হচ্ছে।
এই পদ্ধতিতে JSON data একে একে পড়া হয়, যার ফলে মেমরি ব্যবহারের পরিমাণ অনেক কম হয় এবং বড় JSON ফাইল প্রক্রিয়া করা সহজ হয়।
JsonWriter ব্যবহার করে Large JSON File লেখা
JsonWriter ব্যবহার করে আপনি JSON ফাইল বা স্ট্রিমে একে একে ডেটা লেখার কাজ করতে পারেন।
উদাহরণ: JsonWriter দিয়ে JSON ফাইল লেখা
import com.google.gson.stream.JsonWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (JsonWriter writer = new JsonWriter(new FileWriter("outputFile.json"))) {
writer.beginArray(); // Start JSON array
writer.beginObject();
writer.name("name").value("John");
writer.name("age").value(30);
writer.endObject(); // End first object
writer.beginObject();
writer.name("name").value("Jane");
writer.name("age").value(28);
writer.endObject(); // End second object
writer.endArray(); // End JSON array
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা:
JsonWriterব্যবহার করে একটি নতুন JSON ফাইল outputFile.json তৈরি করা হয়েছে।- beginArray() এবং endArray() দিয়ে JSON অ্যারে শুরু এবং শেষ করা হয়েছে।
- প্রতিটি JSON object তৈরি করতে beginObject() এবং endObject() ব্যবহার করা হয়েছে, এবং name() ও value() মেথড ব্যবহার করে JSON এর ক্ষেত্রগুলি লেখা হয়েছে।
এই পদ্ধতিতে একে একে JSON ডেটা লেখা হচ্ছে, যা বড় JSON ডেটা ফাইলগুলিতে মেমরি ব্যবহারের পরিমাণ কমিয়ে আনে।
JsonReader এবং JsonWriter এর মধ্যে পার্থক্য:
| Aspect | JsonReader | JsonWriter |
|---|---|---|
| Purpose | JSON ডেটা পড়ার জন্য | JSON ডেটা লেখার জন্য |
| Usage | JSON ফাইল থেকে ডেটা স্ট্রিম আকারে পড়া | JSON ফাইল বা স্ট্রিমে ডেটা লেখা |
| Performance | কম মেমরি ব্যবহার করে ডেটা পড়তে সহায়ক | কম মেমরি ব্যবহার করে ডেটা লেখতে সহায়ক |
Gson Streaming API ব্যবহার করে আপনি large JSON files বা data streams খুবই কার্যকরীভাবে এবং কম মেমরি ব্যবহারে প্রক্রিয়া করতে পারেন। JsonReader এবং JsonWriter আপনাকে JSON ডেটা একে একে পড়া বা লেখা সম্ভব করে, যা বড় JSON ডেটা ফাইল প্রক্রিয়া করার জন্য অত্যন্ত উপকারী। এভাবে আপনি memory efficiency বজায় রেখে large-scale JSON data প্রক্রিয়া করতে পারবেন।
Read more