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

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

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) {
      <strong>Gson </strong>gson = new<strong> GsonBuilder()</strong><strong>.setPrettyPrinting(</strong>).<strong>setDateFormat</strong>("yyyy-MM- dd") .<strong>setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create();
</strong>      Person p = new Person("Raja", "Ramesh", 30, Date.valueOf(LocalDate.of(1988, 1, 1)));
      String jsonStr = gson.<strong>toJson</strong>(p);
      System.out.println(jsonStr);
   }
}
<strong>// Person class</strong>
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;
   }
}

输出

<strong>{</strong>
<strong> "fist-name": "Raja",
   "last-name": "Ramesh",
   "_age": 30,
   "date-of-birth": "1988-01-01"
}</strong>

以上就是如何在Java中定义JSON字段名称的命名约定?的详细内容,更多请关注其它相关文章!