JSON (JavaScript Object Notation) একটি লাইটওয়েট ডেটা ইন্টারচেঞ্জ ফরম্যাট যা মানব-readable এবং মেশিন-readable। JSON খুবই জনপ্রিয় এবং ওয়েব অ্যাপ্লিকেশন, API, এবং ডেটাবেসের মধ্যে ডেটা আদান-প্রদানে ব্যবহৃত হয়।
Serialization এবং Deserialization হল দুটি প্রধান প্রসেস যা JSON ডেটা ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।
ASP.NET Core অ্যাপ্লিকেশনগুলিতে JSON Serialization এবং Deserialization সাধারণত System.Text.Json
বা Newtonsoft.Json
লাইব্রেরি ব্যবহার করে করা হয়।
Serialization হল একটি অবজেক্টকে JSON ফরম্যাটে রূপান্তরিত করার প্রক্রিয়া। এটি সাধারণত API রেসপন্স তৈরি করতে, ডেটাবেসে তথ্য সংরক্ষণ করতে অথবা ফাইল সিস্টেমে ডেটা সেভ করার জন্য ব্যবহৃত হয়।
ধরা যাক আমাদের একটি Person
ক্লাস রয়েছে এবং আমরা এই ক্লাসের অবজেক্টকে JSON ফরম্যাটে রূপান্তর করতে চাই।
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
using System.Text.Json;
Person person = new Person
{
Name = "John Doe",
Age = 30,
Email = "john.doe@example.com"
};
// JSON Serialization
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);
এখানে, JsonSerializer.Serialize()
মেথডটি Person
অবজেক্টকে JSON স্ট্রিংয়ে রূপান্তরিত করে।
আউটপুট:
{"Name":"John Doe","Age":30,"Email":"john.doe@example.com"}
using Newtonsoft.Json;
Person person = new Person
{
Name = "John Doe",
Age = 30,
Email = "john.doe@example.com"
};
// JSON Serialization
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString);
আউটপুট:
{"Name":"John Doe","Age":30,"Email":"john.doe@example.com"}
Deserialization হল JSON ফরম্যাটে থাকা ডেটাকে একটি অবজেক্ট বা ডেটা স্ট্রাকচারে রূপান্তরিত করার প্রক্রিয়া। এটি সাধারণত API থেকে প্রাপ্ত JSON ডেটাকে অ্যাপ্লিকেশনের মধ্যে ব্যবহারযোগ্য অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়।
ধরা যাক, আমাদের কাছে একটি JSON স্ট্রিং আছে এবং আমরা সেটি Person
অবজেক্টে রূপান্তর করতে চাই।
{
"Name": "John Doe",
"Age": 30,
"Email": "john.doe@example.com"
}
using System.Text.Json;
string jsonString = "{\"Name\":\"John Doe\",\"Age\":30,\"Email\":\"john.doe@example.com\"}";
// JSON Deserialization
Person person = JsonSerializer.Deserialize<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}, Email: {person.Email}");
এখানে, JsonSerializer.Deserialize<T>()
মেথডটি JSON স্ট্রিংকে Person
ক্লাসের অবজেক্টে রূপান্তরিত করে।
আউটপুট:
Name: John Doe, Age: 30, Email: john.doe@example.com
using Newtonsoft.Json;
string jsonString = "{\"Name\":\"John Doe\",\"Age\":30,\"Email\":\"john.doe@example.com\"}";
// JSON Deserialization
Person person = JsonConvert.DeserializeObject<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}, Email: {person.Email}");
আউটপুট:
Name: John Doe, Age: 30, Email: john.doe@example.com
আপনি JSON এ নেস্টেড অবজেক্টও ব্যবহার করতে পারেন। যখন আপনার Person
ক্লাসের মধ্যে অন্য একটি অবজেক্ট থাকে, তখনও আপনি তা সহজেই Serialize এবং Deserialize করতে পারবেন।
উদাহরণস্বরূপ:
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
Serialization:
Person person = new Person
{
Name = "John Doe",
Address = new Address { Street = "123 Main St", City = "New York" }
};
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);
Deserialization:
string jsonString = "{\"Name\":\"John Doe\",\"Address\":{\"Street\":\"123 Main St\",\"City\":\"New York\"}}";
Person person = JsonSerializer.Deserialize<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Street: {person.Address.Street}, City: {person.Address.City}");
যদি আপনার JSON ডেটাতে তারিখের নির্দিষ্ট ফরম্যাট থাকতে হয়, তাহলে আপনি ডেটা ফরম্যাট কাস্টমাইজ করতে পারেন।
Newtonsoft.Json ব্যবহার করে কাস্টম ডেটা ফরম্যাট:
public class Person
{
public string Name { get; set; }
[JsonConverter(typeof(JsonDateConverter))]
public DateTime DateOfBirth { get; set; }
}
public class JsonDateConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(DateTime);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((DateTime)value).ToString("yyyy-MM-dd"));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return DateTime.ParseExact((string)reader.Value, "yyyy-MM-dd", null);
}
}
আপনি যদি JSON ডেটাতে null ভ্যালু সহ কাজ করেন, তবে DefaultValueHandling
বা NullValueHandling
অপশন ব্যবহার করে তা কনফিগার করতে পারেন।
JSON Serialization এবং Deserialization হলো দুটি গুরুত্বপূর্ণ প্রক্রিয়া যা ডেটাকে JSON ফরম্যাটে রূপান্তর এবং JSON থেকে অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়। System.Text.Json
এবং Newtonsoft.Json
উভয়ই JSON ডেটা প্রসেস করার জন্য শক্তিশালী লাইব্রেরি, এবং আপনি যে কোনো একটি ব্যবহার করতে পারেন আপনার অ্যাপ্লিকেশন প্রয়োজন অনুযায়ী। JSON Serialization এবং Deserialization-এর মাধ্যমে আপনি অ্যাপ্লিকেশনে ডেটার আদান-প্রদান এবং প্রক্রিয়া সহজভাবে সম্পন্ন করতে পারবেন।
common.read_more