Control the Field Order in Serialized JSON Using @JsonPropertyOrder

Jackson provides a @JsonPropertyOrder annotation to specify the order of fields(possibly partial) on serialization. Fields included in annotation declaration will be serialized first in defined order, followed by any fields not included in the definition. This is very helpful when you want to ensure that some fields are output before other fields

Let’s see how to use the @JsonPropertyOrder annotation in practice:

Use @JsonPropertyOrder to Define Custom Order


    @JsonPropertyOrder({ "city", "name" })
    class Person {
        private Long id;
        private String name;
        private String dateOfBirth;
        private String city;
    }
    

In this example, the@JsonPropertyOrder annotation is applied to the Person class, specifying that the fields should be serialized in the order: city, name.

Any fields not listed in the annotation will be serialized after these two.

    Person person = new Person(1L, "Alice", "1990-01-15", "New York");
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(person);
    System.out.println("Serialized Person: " + json);

Output:

Serialized Person: {"city":"New York","name":"Alice","id":1,"dateOfBirth":"1990-01-15"}

Use @JsonPropertyOrder to Define Get Alphabetic Order

by placing @JsonPropertyOrder(alphabetic=true) on Person class, the output JSON fileds can be ordered alphabetically.

    @JsonPropertyOrder(alphabetic = true)
    class Person {
        private Long id;
        private String name;
        private String dateOfBirth;
        private String city;
    }

Tht output:

Serialized Person: {"city":"New York","dateOfBirth":"1990-01-15","id":1,"name":"Alice"}

Read More