Gson库提供了命名约定,作为枚举FieldNamingPolicy的一部分。我们可以使用GsonBuilder 类的setFieldNamingPolicy()方法设置字段命名策略。
身份-使用此命名策略,字段名称保持不变。
LOWER_CASE_WITH_DASHES-使用此命名策略,将Java字段名称从其驼峰式的形式修改为小写的字段名称,其中每个单词都用短划线(-)分隔。
LOWER_CASE_WITH_UNDERSCORES-使用此命名策略,将Java字段名称从其驼峰式的形式修改为小写的字段名称,其中每个单词都用下划线(_)分隔。
UPPER_CAMEL_CASE-使用此命名策略,确保将Java字段名称的第一个“字母”序列化为JSON格式时大写。
UPPER_CAMEL_CASE_WITH_SPACES-使用此命名策略,请确保在将Java字段名称的第一个“字母”序列化为JSON格式时将其大写,并且单词之间将用空格分隔。
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);
}
}
//员工阶层
class Employee {
private int empId;
private String firstName;
private String lastName;
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;
}
}输出结果
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"}