Порядок свойств в определениях чванства меняется от прогона к прогону
Я использую swagger-maven-plugin
генерировать swagger.json. Однако я заметил, что порядок свойств меняется от запуска к запуску. Например, это может быть:
{
...
"definitions" : {
"MyClass1" : {
"type" : "object",
"properties" : {
"name" : {
"type" : "string"
},
"title" : {
"type" : "string"
},
"description" : {
"type" : "string"
},
}
}
}
...
}
а затем после следующего поколения:
{
...
"definitions" : {
"MyClass1" : {
"type" : "object",
"properties" : {
"description" : {
"type" : "string"
},
"title" : {
"type" : "string"
},
"name" : {
"type" : "string"
}
}
}
}
...
}
Мой класс по Java:
public interface MyClass1 {
String getName();
String getTitle();
String getDescription();
}
1 ответ
Решение
В Java Runtime невозможно узнать точный порядок методов, объявленных в классе. Если вы откроете java.lang.Class#getDeclaredMethods()
(см. https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html) вы увидите, что The elements in the returned array are not sorted and are not in any particular order.
,
Вот почему Джексон не может сделать это для вас.
Однако есть 2 решения:
1.Вы можете использовать @JsonPropertyOrder
аннотация:
@JsonPropertyOrder({"name", "title", "description"})
public interface MyClass1 {
String getName();
String getTitle();
String getDescription();
}
2.Вы можете использовать класс с полями (порядок полей сохраняется)
public class MyClass1 {
String name;
String title;
String description;
//Getters skipped
}