如何在 Java 中定義 JSON 欄位名的命名約定?


可以使用 **FieldNamingPolicy** 定義一些 JSON 欄位名的標準命名約定,並且可以與 **GsonBuilder** 結合使用,以配置 **Gson** **例項**,以便將 Java 欄位名正確地轉換為所需的 JSON 欄位名。我們可以使用 **GsonBuilder** 的 **setFieldNamingPolicy()** 方法,在 **序列化** 和 **反序列化** 期間將特定的命名策略配置到物件的欄位。

Gson 支援以下欄位命名策略的各種欄位命名需求

  • **FieldNamingPolicy.IDENTITY**: 在序列化物件時,它使用與 Java 模型完全相同的命名。
  • **FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES**: 它將 Java 欄位名從駝峰式命名法修改為小寫欄位名,其中每個單詞之間用下劃線 (_) 分隔。
  • **FieldNamingPolicy.LOWER_CASE_WITH_DASHES**: 它將 Java 欄位名從駝峰式命名法修改為小寫欄位名,其中每個單詞之間用連字元 (-) 分隔。
  • **FieldNamingPolicy.UPPER_CAMEL_CASE**: 它將確保在序列化為 JSON 格式時,Java 欄位名的第一個“字母”大寫。
  • **FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES**: 它將確保在序列化為 JSON 格式時,Java 欄位名的第一個“字母”大寫,並且單詞之間用空格分隔。

示例

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

更新於: 2020年2月14日

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.