Javaで、JSONキーによるシリアライズ時のソート

このようなクラスオブジェクトが存在したとします。

import java.io.Serializable;
import lombok.Data;
@Data
public class Person implements Serializable{
    private static final long serialVersionUID = 1L;

    private String name;
    private String alias;
    private int id;
    private int age;
}

これを、Jackson ObjectMapperシリアライズすると以下のようになります
インデントを指定してシリアライズ実行

ObjectMapper mapper = new ObjectMapper();
DefaultPrettyPrinter.Indenter indenter = new DefaultIndenter("    ", DefaultIndenter.SYS_LF);
DefaultPrettyPrinter printer = new DefaultPrettyPrinter();
printer.indentObjectsWith(indenter);
printer.indentArraysWith(indenter);
// person = Person オブジェクト生成済
String json = mapper.writer(printer).writeValueAsString(person);
System.out.println(json);
{
    "name" : "佐藤",
    "alias" : "sato",
    "id" : 104,
    "age" : 50
}

でも、これを
 id → name → alias → age
の順、=任意の順にしたい時は、JsonProperty で、index を指定します。

ここに JavaDoc があります。
JsonProperty (Jackson-annotations 2.13.0 API)

import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;
import lombok.Data;
@Data
public class Person implements Serializable{
    private static final long serialVersionUID = 1L;

    @JsonProperty(index=1)
    private String name;

    @JsonProperty(index=2)
    private String alias;

    @JsonProperty(index=0)
    private int id;

    @JsonProperty(index=3)
    private int age;
}

すると、以下のとおり期待どおりになります

{
    "id" : 104,
    "name" : "佐藤",
    "alias" : "sato",
    "age" : 50
}

もう1つ、クラスに @JsonPropertyOrder で、プロパティ名(JSONキー)の順列を書く方法もあります。

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Data;
@Data
@JsonPropertyOrder({"id", "name", "alias", "age"})
public class Person implements Serializable{
    private static final long serialVersionUID = 1L;

    private String name;

    private String alias;

    private int id;

    private int age;

}

こちらの方が楽な気もします。
@JsonPropertyOrder(alphabetic=true) ならアルファベット順になります、