Gson লাইব্রেরি একটি উপায় প্রদান করে কাস্টম ডিসিরিয়ালাইজার নির্দিষ্ট করার জন্য GsonBuilder-এ একটি কাস্টম ডিসিরিয়ালাইজার রেজিস্টার করে যদি আমাদের জাভা অবজেক্টকে JSON-এ রূপান্তর করার একটি উপায় দরকার হয়। আমরা com.google.gson.JsonDeserializer ক্লাসের deserialize() মেথড ওভাররাইড করে একটি কাস্টম ডিসিরিয়ালাইজার তৈরি করতে পারি।
নিচের উদাহরণে, JSON-এর কাস্টম ডিসিরিয়ালাইজেশন-এর ইম্প্লিমেন্টেশন।
উদাহরণ
import java.lang.reflect.Type;
import com.google.gson.*;
public class CustomJSONDeSerializerTest {
public static void main(String[] args) {
Gson gson = new GsonBuilder().registerTypeAdapter(Password.class, new
PasswordDeserializer()).setPrettyPrinting().create();
String jsonStr = "{" +
"\"firstName\": \"Adithya\"," +
"\"lastName\": \"Sai\"," +
"\"age\": 25," +
"\"address\": \"Pune\"," +
"\"password\": \"admin@123\"" +
"}";
Student student = gson.fromJson(jsonStr, Student.class);
System.out.println(student.getPassword().getPassword());
}
}
class PasswordDeserializer implements JsonDeserializer {
@Override
public Password deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
String ecryptedPwd = json.getAsString();
return new Password(new StringBuffer(ecryptedPwd).toString());
}
}
// Student ক্লাস
class Student {
private String firstName;
private String lastName;
private int age;
private String address;
private Password password;
public Student(String firstName, String lastName, int age, String address) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.address = address;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Password getPassword() {
return password;
}
public void setPassword(Password password) {
this.password = password;
}
public String toString() {
return "Student[ " +
"firstName = " + firstName +
", lastName = " + lastName +
", age = " + age +
", address = " + address +
" ]";
}
}
// Password ক্লাস
class Password {
private String password;
public Password(String password) {
super();
this.password = password;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
আউটপুট
admin@123