如何在Java中定义JSON字段名称的命名约定?

阅读 647 收藏 0 点赞 0 评论 0

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"
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号