How to define the naming conventions for JSON field names in Java?



The FieldNamingPolicy can be used to define a few standard naming conventions for JSON field names and it can be used in conjunction with GsonBuilder to configure a Gson instance to properly translate Java field names into the desired JSON field names. We can use the setFieldNamingPolicy() method of GsonBuilder to configure a specific naming policy strategy to an object's field during serialization and deserialization.

Gson supports various field naming requirements with following field naming policies

  • FieldNamingPolicy.IDENTITY: It uses the exact same naming as the Java model when it serializes an object.
  • FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES: It modifies a Java field name from its camel-cased form to a lower case field name where each word is separated by an underscore(_).
  • FieldNamingPolicy.LOWER_CASE_WITH_DASHES: It modifies the Java field name from its camel-cased form to a lower case field name where each word is separated by a dash(-).
  • FieldNamingPolicy.UPPER_CAMEL_CASE: It will ensure that the first "letter" of the Java field name is capitalized when serialized to its JSON form.
  • FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES: It will ensure that the first "letter" of the Java field name is capitalized when serialized to its JSON form and the words will be separated by a space.

Example

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

Output

{  "fist-name": "Raja",    "last-name": "Ramesh",    "_age": 30,    "date-of-birth": "1988-01-01" }
Updated on: 2020-02-14T06:58:38+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements