Custom Field Naming Strategy তৈরি করা

Gson এর Field Naming Strategy - জিসন (Gson) - Java Technologies

312

Gson-এ Custom Field Naming Strategy তৈরি করা খুবই সহজ, এবং এটি ব্যবহৃত হয় যখন আপনি JSON এর ফিল্ড নামগুলো কাস্টমাইজ করতে চান। আপনি যদি Java ক্লাসের ফিল্ড নামগুলোকে একটি নির্দিষ্ট নিয়ম অনুসারে JSON-এ রূপান্তর করতে চান, তবে আপনি FieldNamingStrategy ইন্টারফেসটি ইমপ্লিমেন্ট করে একটি কাস্টম নামকরণ কৌশল (naming strategy) তৈরি করতে পারেন।

Custom Field Naming Strategy তৈরি করার প্রক্রিয়া:

  1. FieldNamingStrategy ইন্টারফেস ইমপ্লিমেন্ট করা: এই ইন্টারফেসে একটি translateName(Field field) মেথড থাকে, যা ফিল্ডের নাম পরিবর্তন করার জন্য কাস্টম লজিক বাস্তবায়ন করতে সাহায্য করে।
  2. GsonBuilder এ কাস্টম স্ট্রাটেজি যুক্ত করা: এরপর এই কাস্টম স্ট্রাটেজি GsonBuilder-এ রেজিস্টার করতে হবে।

উদাহরণ:

ধরা যাক, আপনি Java ক্লাসের ফিল্ড নামগুলিকে snake_case ফরম্যাটে কনভার্ট করতে চান, অর্থাৎ যদি আপনার Java ক্লাসে কোনো ফিল্ডের নাম firstName হয়, তাহলে JSON এ তা first_name হিসেবে রূপান্তর হবে।

1. Custom Field Naming Strategy (Snake Case) উদাহরণ:

import com.google.gson.*;
import com.google.gson.FieldNamingStrategy;
import java.lang.reflect.Field;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

// Custom Field Naming Strategy
class SnakeCaseNamingStrategy implements FieldNamingStrategy {

    @Override
    public String translateName(Field field) {
        String name = field.getName();
        StringBuilder snakeCaseName = new StringBuilder();
        
        // Convert camelCase to snake_case
        for (char c : name.toCharArray()) {
            if (Character.isUpperCase(c)) {
                // Add an underscore before uppercase letter and convert it to lowercase
                snakeCaseName.append('_').append(Character.toLowerCase(c));
            } else {
                snakeCaseName.append(c);
            }
        }
        
        return snakeCaseName.toString();
    }
}

class Person {
    private String firstName;
    private String lastName;
    private int age;

    public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public int getAge() {
        return age;
    }
}

public class Main {
    public static void main(String[] args) {
        // Gson তৈরি করা Custom Field Naming Strategy দিয়ে
        Gson gson = new GsonBuilder()
                .setFieldNamingStrategy(new SnakeCaseNamingStrategy()) // কাস্টম নামকরণ স্ট্রাটেজি ব্যবহার
                .create();

        // Java Object তৈরি করা
        Person person = new Person("John", "Doe", 30);

        // Java Object কে JSON এ কনভার্ট করা
        String json = gson.toJson(person);
        System.out.println("Serialized JSON: " + json);
    }
}

আউটপুট:

Serialized JSON: {"first_name":"John","last_name":"Doe","age":30}

ব্যাখ্যা:

  1. SnakeCaseNamingStrategy:
    • translateName মেথডটি প্রতিটি ফিল্ডের নাম কনভার্ট করে camelCase থেকে snake_case এ। এর জন্য প্রতিটি বড় হাতের অক্ষরের আগে _ চিহ্ন যোগ করা হয় এবং বড় হাতের অক্ষরগুলো ছোট হাতের অক্ষরে পরিবর্তিত হয়।
  2. GsonBuilder:
    • .setFieldNamingStrategy(new SnakeCaseNamingStrategy()) কোডটি GsonBuilder এ কাস্টম নামকরণ স্ট্রাটেজি রেজিস্টার করে। এর ফলে Gson যেকোনো Java অবজেক্টকে JSON-এ রূপান্তর করার সময় এই কাস্টম নামকরণ কৌশল ব্যবহার করবে।

2. অন্য ধরনের নামকরণ কৌশল (PascalCase, Uppercase):

আপনি যদি অন্য ধরনের নামকরণ কৌশল যেমন PascalCase বা UPPERCASE চান, তবে একইভাবে কাস্টম FieldNamingStrategy তৈরি করতে পারেন।

PascalCase উদাহরণ:

class PascalCaseNamingStrategy implements FieldNamingStrategy {

    @Override
    public String translateName(Field field) {
        String name = field.getName();
        StringBuilder pascalCaseName = new StringBuilder();

        // Convert camelCase to PascalCase
        for (char c : name.toCharArray()) {
            if (Character.isUpperCase(c)) {
                pascalCaseName.append(c);
            } else {
                pascalCaseName.append(Character.toUpperCase(c));
            }
        }

        return pascalCaseName.toString();
    }
}

Uppercase উদাহরণ:

class UppercaseNamingStrategy implements FieldNamingStrategy {

    @Override
    public String translateName(Field field) {
        return field.getName().toUpperCase(); // সব কিছু বড় হাতের অক্ষরে রূপান্তর
    }
}
  • Custom Field Naming Strategy আপনাকে JSON ফিল্ড নামগুলোর কাস্টমাইজেশন করার সুযোগ দেয়, যেমন আপনি camelCase থেকে snake_case বা PascalCase এ রূপান্তর করতে পারেন।
  • আপনি FieldNamingStrategy ইন্টারফেস ইমপ্লিমেন্ট করে নিজের কাস্টম স্ট্রাটেজি তৈরি করতে পারেন এবং এটি GsonBuilder এর মাধ্যমে ব্যবহার করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...