Change Field Names with @JsonProperty

In this article, we’ll delve into the versatility of Jackson’s @JsonProperty annotation, which allows you to customize field names during both serialization and deserialization.

Changing Field Names for Serialization

To change a field name during serialization, apply the @JsonProperty annotation to the field you want to customize:

public class Person {
    private Long id;

    private String name;

    private String dateOfBirth;

    // Getters and setters (not shown for brevity)

In this example, we’ve annotated the “name” and “dateOfBirth” properties with @JsonProperty. During serialization, these properties will be mapped to “full_name” and “birth_date” in the resulting JSON.

    private static void serialize() throws JsonProcessingException {
        Person alice = new Person();

        ObjectMapper objectMapper = new ObjectMapper();
        String jsonString = objectMapper.writeValueAsString(alice);
        System.out.println("Person object to JSON String: " + jsonString);


Person object to JSON String: {"id":1,"full_name":"Alice","birth_date":"1990-05-15"}

Changing Field Names for Deserialization

@JsonProperty annotation also works for deserialization.

private static void deserialize() throws JsonProcessingException {
        String json = "{\"id\":1,\"full_name\":\"Alice\",\"birth_date\":\"1990-05-15\"}";
        ObjectMapper objectMapper = new ObjectMapper();
        Person person = objectMapper.readValue(json, Person.class);

        System.out.println("JSON String to Person object: " + person);

Tht output:

JSON String to Person object: Person(id=1, name=Alice, dateOfBirth=1990-05-15)

Read More