Order of JSON objects using Jackson's ObjectMapper

@JsonPropertyOrder({ "id", "label", "target", "source", "attributes" })
public class Relation { ... }

Do you know there is a convenient way to specify alphabetic ordering?

@JsonPropertyOrder(alphabetic = true)
public class Relation { ... }

If you have specific requirements, here how you configure custom ordering:

@JsonPropertyOrder({ "id", "label", "target", "source", "attributes" })
public class Relation { ... }

The ordering of fields within a generated .class is indeterminate, so you can't count on that.

If you want specific ordering per class then you'll need to use the one of the approaches specified in other answers.

If you want everything to default to alphabetical ordering (e.g. for consistency in how the JSON is structured) then you can configure the ObjectMapper like this:

ObjectMapper mapper = new ObjectMapper();
mapper.setConfig(mapper.getSerializationConfig()
   .with(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY));

For more consistent JSON consider also adding:

   .with(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS)

One advantage of this approach is that you don't have to modify each class being serialized.