@SerializedName এবং Custom Field Naming এর পার্থক্য

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

340

Gson@SerializedName অ্যানোটেশন এবং Custom Field Naming এর মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। এগুলি মূলত JSON ডেটা এবং Java Object-এর মধ্যে ফিল্ড নামের পার্থক্য হ্যান্ডল করার জন্য ব্যবহৃত হয়।

1. @SerializedName অ্যানোটেশন:

@SerializedName অ্যানোটেশনটি Gson এর একটি শক্তিশালী ফিচার যা আপনাকে JSON ফিল্ডের নাম এবং Java ক্লাসের ফিল্ডের নামের মধ্যে পার্থক্য তৈরি করার সুযোগ দেয়। আপনি যখন JSON থেকে ডেটা পড়বেন বা JSON এ ডেটা লিখবেন, তখন Gson এই অ্যানোটেশনের মাধ্যমে আপনাকে সেই পার্থক্য ম্যানেজ করতে সাহায্য করে।

উদাহরণ:

ধরা যাক, আপনার একটি User ক্লাস রয়েছে যেখানে JSON এর ফিল্ড নাম first_name এবং last_name তবে Java ক্লাসে এগুলোর নাম firstName এবং lastName

import com.google.gson.annotations.SerializedName;

public class User {
    @SerializedName("first_name")
    private String firstName;

    @SerializedName("last_name")
    private String lastName;

    // Getter and Setter methods
    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;
    }
}

Gson দিয়ে JSON এ কনভার্ট করা:

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        // Create User object
        User user = new User();
        user.setFirstName("John");
        user.setLastName("Doe");

        // Convert to JSON using Gson
        Gson gson = new Gson();
        String json = gson.toJson(user);
        System.out.println(json);
    }
}

আউটপুট:

{
  "first_name": "John",
  "last_name": "Doe"
}

এখানে কী হচ্ছে:

  • @SerializedName অ্যানোটেশনটি Gson-কে বলে যে firstName Java ফিল্ডটি first_name নামের JSON ফিল্ডের সাথে ম্যাপ হবে, এবং lastName Java ফিল্ডটি last_name JSON ফিল্ডের সাথে ম্যাপ হবে।
  • Gson ডিফল্টভাবে Java ফিল্ড নাম থেকে JSON ফিল্ড নাম তৈরি করে (camelCase থেকে snake_case রূপান্তর), তবে আপনি যদি কাস্টম JSON ফিল্ড নাম ব্যবহার করতে চান, তখন @SerializedName অ্যানোটেশন ব্যবহার করতে হবে।

2. Custom Field Naming (Custom Field Naming Strategy):

Custom field naming strategy হল Gson এর FieldNamingStrategy ইন্টারফেসের মাধ্যমে global বা class-level কাস্টম নামকরণ কৌশল নির্ধারণ করার একটি পদ্ধতি। এর মাধ্যমে আপনি Gson কে বলতেই পারেন যে, কীভাবে JSON ফিল্ড নামগুলো তৈরি হবে, যেমন camelCase, snake_case, PascalCase, ইত্যাদি।

উদাহরণ:

আপনি যদি snake_case অথবা অন্য কোনো কাস্টম স্ট্র্যাটেজি ব্যবহার করতে চান, তবে আপনি FieldNamingPolicy বা কাস্টম FieldNamingStrategy প্রয়োগ করতে পারেন।

কাস্টম FieldNamingStrategy উদাহরণ:

import com.google.gson.Gson;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.GsonBuilder;

public class User {
    private String firstName;
    private String lastName;

    // Getter and Setter methods
    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 static void main(String[] args) {
        User user = new User();
        user.setFirstName("John");
        user.setLastName("Doe");

        // Use GsonBuilder to apply a custom naming policy
        Gson gson = new GsonBuilder()
                .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY)  // Here you can choose other policies too, like LOWER_CASE_WITH_UNDERSCORES
                .create();

        String json = gson.toJson(user);
        System.out.println(json);
    }
}

আউটপুট:

{
  "firstName": "John",
  "lastName": "Doe"
}

এখানে কী হচ্ছে:

  • FieldNamingPolicy.IDENTITY দিয়ে Gson বলছে, যে JSON ফিল্ডের নাম Java ফিল্ডের মতোই থাকবে (যেমন camelCase ফরম্যাটে)।
  • আপনি বিভিন্ন স্ট্র্যাটেজি ব্যবহার করতে পারেন যেমন FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES বা আপনার নিজস্ব কাস্টম স্ট্র্যাটেজি।

3. পার্থক্য:

ফিচার@SerializedNameCustom Field Naming
ব্যবহারJSON ফিল্ড নাম এবং Java ফিল্ড নামের মধ্যে নির্দিষ্ট পার্থক্য তৈরি করতেগ্লোবালি বা ক্লাস লেভেলে ফিল্ড নাম কিভাবে হবে তা নির্ধারণ করতে
ফোকাসএক বা একাধিক ফিল্ডের নাম কাস্টমাইজ করতেসকল ফিল্ডের নামের জন্য একটি নির্দিষ্ট কৌশল ব্যবহার করতে
গ্লোবাল প্রভাবশুধুমাত্র নির্দিষ্ট ফিল্ডের উপর প্রভাব ফেলেগ্লোবালি (ক্লাসের সমস্ত ফিল্ডের জন্য) প্রভাব ফেলে
অ্যানোটেশনপ্রয়োজন: @SerializedNameপ্রয়োজন: FieldNamingPolicy বা কাস্টম FieldNamingStrategy
কাস্টমাইজেশনJSON ফিল্ড নাম নির্দিষ্টভাবে কাস্টমাইজ করা যায়পুরো JSON ডেটার ফিল্ড নাম কাস্টমাইজ করা যায়
সহজতাসহজ এবং ফিল্ড ভিত্তিক কাস্টমাইজেশনপুরো ক্লাস বা প্রকল্পের জন্য কাস্টমাইজেশন

4. কোনটি কখন ব্যবহার করবেন:

  • @SerializedName: যখন আপনি নির্দিষ্ট JSON ফিল্ড নামের সাথে Java ফিল্ড নামের মিল নেই, তখন এই অ্যানোটেশন ব্যবহার করুন।
  • Custom Field Naming (FieldNamingPolicy): যখন আপনি সমস্ত ফিল্ডের জন্য একটি নির্দিষ্ট কৌশল প্রয়োগ করতে চান, যেমন snake_case, camelCase, ইত্যাদি।
  • @SerializedName অ্যানোটেশন ব্যবহার করে আপনি একটি নির্দিষ্ট JSON ফিল্ড নাম এবং Java ফিল্ড নামের মধ্যে একটি সম্পর্ক স্থাপন করতে পারেন।
  • Custom Field Naming স্ট্র্যাটেজি ব্যবহারের মাধ্যমে আপনি গ্লোবালি JSON ফিল্ড নাম কাস্টমাইজ করতে পারেন, যেমন একটি নির্দিষ্ট নেমিং কনভেনশন প্রয়োগ করে।
Content added By
Promotion

Are you sure to start over?

Loading...