Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

FieldNamingPolicy Enum ใน Gson (Java)

Gson library ให้ naming conventions มาเป็นส่วนหนึ่งของ enum FieldNamingPolicy เราสามารถตั้งค่า field naming policy โดยใช้เมธอด setFieldNamingPolicy() ของคลาส GsonBuilder

FieldNamingPolicy Enum Constants

Constant คำอธิบาย ตัวอย่าง (Java field → JSON key)
IDENTITY ใช้ชื่อฟิลด์ as-is (ค่า default) firstName → "firstName"
LOWER_CASE_WITH_DASHES camelCase → lower-case-with-dashes firstName → "first-name"
LOWER_CASE_WITH_UNDERSCORES camelCase → lower_case_with_underscores firstName → "first_name"
UPPER_CAMEL_CASE ตัวอักษรแรกของแต่ละคำใหญ่ (PascalCase) firstName → "FirstName"
UPPER_CAMEL_CASE_WITH_SPACES PascalCase คั่นด้วย space firstName → "First Name"

Syntax

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);
    }
}

// Employee class
class Employee {
    private int empId;
    private String firstName;
    private String lastName;
    
    // getters/setters...
    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; }
}

ผลลัพธ์ (Output)

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"}

คำแนะนำการเลือก Policy

  • IDENTITY - มาตรฐาน Java/JSON, ใช้กับ internal APIs
  • LOWER_CASE_WITH_UNDERSCORES - มาตรฐาน snake_case, ยอดนิยมใน REST APIs, Python, Ruby, databases
  • LOWER_CASE_WITH_DASHES - kebab-case, ใช้ในบาง APIs, URLs, CSS
  • UPPER_CAMEL_CASE - PascalCase, ใช้ใน .NET, บาง enterprise systems
  • UPPER_CAMEL_CASE_WITH_SPACES - ใช้น้อย มักสำหรับ display/human-readable keys

Custom Policy (Advanced)

หาก built-in policies ไม่เพียงพอ สร้าง custom FieldNamingStrategy (ดูบทความก่อนหน้า)

สรุป

FieldNamingPolicy enum ให้ naming conventions มาตรฐาน 5 แบบ พร้อมใช้งานทันทีผ่าน GsonBuilder.setFieldNamingPolicy() ช่วยลดความจำเป็นต้องเขียน custom strategy สำหรับกรณีทั่วไป