কম্পিউটার টিউটোরিয়াল

Gson-এ FieldNamingPolicy enum ব্যবহার

Gson লাইব্রেরি নেমিং কনভেনশন প্রদান করে FieldNamingPolicy enum-এর অংশ হিসেবে। GsonBuilder ক্লাসের setFieldNamingPolicy() মেথড ব্যবহার করে ফিল্ড নেমিং পলিসি সেট করা যায়।

FieldNamingPolicy enum কনস্ট্যান্টস

  • IDENTITY - এই নেমিং পলিসি ব্যবহার করলে ফিল্ড নাম অপরিবর্তিত থাকে।
  • LOWER_CASE_WITH_DASHES - এই নেমিং পলিসি ব্যবহার করলে জাভা ফিল্ড নামকে ক্যামেল-কেসড ফর্ম থেকে লোৱার কেস ফিল্ড নামে রূপান্তর করে যেখানে প্রতিটি শব্দ ড্যাশ (-) দিয়ে সেপারেটেড।
  • LOWER_CASE_WITH_UNDERSCORES - এই নেমিং পলিসি ব্যবহার করলে জাভা ফিল্ড নামকে ক্যামেল-কেসড ফর্ম থেকে লোয়ার কেস ফিল্ড নামে রূপান্তর করে যেখানে প্রতিটি শব্দ আন্ডারস্কোর (_) দিয়ে সেপারেটেড।
  • UPPER_CAMEL_CASE - এই নেমিং পলিসি ব্যবহার করলে জাভা ফিল্ড নামের প্রথম "লেটার" ক্যাপিটালাইজড থাকে JSON-এ সিরিয়ালাইজেশনের সময়।
  • UPPER_CAMEL_CASE_WITH_SPACES - এই নেমিং পলিসি ব্যবহার করলে জাভা ফিল্ড নামের প্রথম "লেটার" ক্যাপিটালাইজড থাকে JSON-এ সিরিয়ালাইজেশনের সময় এবং শব্দগুলো স্পেস দিয়ে সেপারেটেড থাকে।

সিনট্যাক্স

public enum FieldNamingPolicy extends Enum<FieldNamingPolicy> implements FieldNamingStrategy

উদাহরণ

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

public class GsonFieldNamingPolicyTest {
    public static void main(String[] args) {
        Employee emp = new Employee();
        emp.setEmpId(115);
        emp.setFirstName("Raja");
        emp.setLastName("Ramesh");
        
        GsonBuilder gsonBuilder = new GsonBuilder();
        
        Gson gson1 = gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create();
        String result1 = gson1.toJson(emp);
        System.out.println("LOWER_CASE_WITH_DASHES: " + result1);
        
        Gson gson2 = gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
        String result2 = gson2.toJson(emp);
        System.out.println("LOWER_CASE_WITH_UNDERSCORES: " + result2);
        
        Gson gson3 = gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
        String result3 = gson3.toJson(emp);
        System.out.println("UPPER_CAMEL_CASE: " + result3);
        
        Gson gson4 = gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES).create();
        String result4 = gson4.toJson(emp);
        System.out.println("UPPER_CAMEL_CASE_WITH_SPACES: " + result4);
        
        Gson gson5 = gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.IDENTITY).create();
        String result5 = gson5.toJson(emp);
        System.out.println("IDENTITY: " + result5);
    }
}

class Employee {
    private int empId;
    private String firstName;
    private String lastName;
    
    public int getEmpId() { return empId; }
    public void setEmpId(int empId) { this.empId = empId; }
    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; }
}

আউটপুট

LOWER_CASE_WITH_DASHES: {"emp-id":115,"first-name":"Raja","last-name":"Ramesh"}
LOWER_CASE_WITH_UNDERSCORES: {"emp_id":115,"first_name":"Raja","last_name":"Ramesh"}
UPPER_CAMEL_CASE: {"EmpId":115,"FirstName":"Raja","LastName":"Ramesh"}
UPPER_CAMEL_CASE_WITH_SPACES: {"Emp Id":115,"First Name":"Raja","Last Name":"Ramesh"}
IDENTITY: {"empId":115,"firstName":"Raja","lastName":"Ramesh"}

কোনটি ব্যবহার করবেন?

  • snake_case (LOWER_CASE_WITH_UNDERSCORES): সবচেয়ে পপুলার, পাইথন/রুবি/ডেটাবেস কনভেনশন
  • kebab-case (LOWER_CASE_WITH_DASHES): কিছু REST API স্ট্যান্ডার্ড
  • PascalCase (UPPER_CAMEL_CASE): .NET/সি# কনভেনশন
  • IDENTITY: জাভা কনভেনশন (camelCase), ডিফল্ট
  1. জাভাতে Gson লাইব্রেরি ব্যবহার করে Map কে JSON-এ রূপান্তর করুন

  2. জাভাতে Gson লাইব্রেরি ব্যবহার করে JSON অবজেক্ট কে জাভা অবজেক্টে রূপান্তর করুন

  3. জাভাতে টাইপ-সেফ Enum কী?

  4. জাভাতে enum এক্সটেন্ড করা সম্ভব কি?