做Java Spring Boot开发时,经常会用postman之类的软件调试API。在访问定义的接口后的返回体字段排序和代码里定义的实体是一致的,比如定义StudentDTO类
public class StudentDTO {
private String name;
private Integer age;
private String gender;
/*
* setter and getter and toString
*/
}
那postman中数据展示会和代码中的顺序一致:
{
"name": "Chuck Bass",
"age": 10,
"gender": "male"
}
但是在chrome浏览器的调试界面,接口响应结果可能是按照字段的字母表顺序排列:
{
"age": 10,
"gender": "male",
"name": "Chuck Bass"
}
多数时候这个并没有什么影响。
不过如果需要将字段按特定顺序显示,有以下两种方案:
1-使用LinkedHashMap作为返回体,实现字段固定顺序
@GetMapping("/your-endpoint")
public ResponseEntity<Map<String, Object>> getYourData() {
Map<String, Object> response = new LinkedHashMap<>();
response.put("age", 10);
response.put("gender", "male");
response.put("name", "Chuck Bass");
return ResponseEntity.ok(response);
}
2-在DTO类上使用注解JsonPropertyOrder
如果是按字母表顺序可以写作@JsonPropertyOrder(alphabetic=true);
如果想按自定义顺序,可以写作@JsonPropertyOrder({ "age", "gender", "name" })