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

จะกำหนดหลักการตั้งชื่อสำหรับชื่อฟิลด์ JSON ใน Java ได้อย่างไร?


นโยบายการตั้งชื่อฟิลด์ สามารถใช้เพื่อกำหนดรูปแบบการตั้งชื่อมาตรฐานสองสามแบบสำหรับชื่อฟิลด์ JSON และสามารถใช้ร่วมกับ GsonBuilder เพื่อกำหนดค่า Gson ตัวอย่าง เพื่อแปลชื่อฟิลด์ Java เป็นชื่อฟิลด์ JSON ที่ต้องการอย่างเหมาะสม เราสามารถใช้ setFieldNamingPolicy() วิธีการของ GsonBuilder เพื่อกำหนดค่ากลยุทธ์นโยบายการตั้งชื่อเฉพาะให้กับฟิลด์ของออบเจ็กต์ระหว่าง การทำให้เป็นอนุกรม และ ดีซีเรียลไลเซชัน .

Gson รองรับข้อกำหนดการตั้งชื่อฟิลด์ต่างๆ ด้วยนโยบายการตั้งชื่อฟิลด์ดังต่อไปนี้

  • FieldNamingPolicy.IDENTITY :ใช้การตั้งชื่อเดียวกันกับโมเดล Java เมื่อสร้างอนุกรมอ็อบเจกต์
  • FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES :แก้ไขชื่อฟิลด์ Java จากรูปแบบอูฐเป็นชื่อฟิลด์ตัวพิมพ์เล็กโดยที่แต่ละคำถูกคั่นด้วยขีดล่าง (_)
  • FieldNamingPolicy.LOWER_CASE_WITH_DASHES: มันแก้ไขชื่อฟิลด์ Java จากรูปแบบอูฐของมันไปเป็นชื่อฟิลด์ตัวพิมพ์เล็กโดยที่แต่ละคำถูกคั่นด้วยเครื่องหมายขีดกลาง (-)
  • FieldNamingPolicy.UPPER_CAMEL_CASE :จะทำให้แน่ใจว่า "ตัวอักษร" ตัวแรกของชื่อฟิลด์ Java เป็นตัวพิมพ์ใหญ่เมื่อทำให้เป็นอนุกรมในแบบฟอร์ม JSON
  • FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES :จะทำให้แน่ใจว่า "ตัวอักษร" ตัวแรกของชื่อฟิลด์ Java เป็นตัวพิมพ์ใหญ่เมื่อทำให้เป็นอนุกรมในรูปแบบ JSON และคำจะถูกคั่นด้วยการเว้นวรรค

ตัวอย่าง

import com.google.gson.*;
import java.sql.Date;
import java.time.LocalDate;
public class FieldNamingPolicyTest {
   public static void main(String[] args) {
      Gson gson = new GsonBuilder().setPrettyPrinting().setDateFormat("yyyy-MM- dd") .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create();
      Person p = new Person("Raja", "Ramesh", 30, Date.valueOf(LocalDate.of(1988, 1, 1)));
      String jsonStr = gson.toJson(p);
      System.out.println(jsonStr);
   }
}
// Person class
class Person {
   private String fistName;
   private String lastName;
   private int _age;
   private Date dateOfBirth;
   public Person(String fistName, String lastName, int _age, Date dateOfBirth) {
      super();
      this.fistName = fistName;
      this.lastName = lastName;
      this._age = _age;
      this.dateOfBirth = dateOfBirth;
   }
}

ผลลัพธ์

{
 "fist-name": "Raja",
   "last-name": "Ramesh",
   "_age": 30,
   "date-of-birth": "1988-01-01"
}