如何在 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"
}
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP