Jackson是Spring Boot默认的JSON数据处理框架,可是其并不依赖于任何的Spring 库。有的小伙伴觉得Jackson只能在Spring框架内使用,其实不是的,没有这种限制。它提供了不少的JSON数据处理方法、注解,也包括流式API、树模型、数据绑定,以及复杂数据类型转换等功能。它虽然简单易用,但绝对不是小玩具,更多的内容我会写成一个系列,5-10篇文章,请您继续关注我。html
《序列化与反序列化核心用法-JSON框架Jackson精解第一篇》java
@JsonProperty
@JsonInclude
《特殊数据格式处理-JSON框架Jackson精解第2篇》spring
你们在平时进行JSON数据序列化过程当中,常常会有按照必定顺序序列化属性这样的需求。本文为你们介绍如何对JSON序列化的属性进行排序,能够自定义顺序,也能够按照字母表顺序排序。json
@JsonPropertyOrder
属性排序经过JsonPropertyOrder注解指定java POJO中各个成员变量的属性序列化顺序。数组
@Data @JsonPropertyOrder({"salary","name","age","hobbies","friends"}) public class PlayerStar { private String name; private Integer age; private String[] hobbies; //业余爱好,数组 private List<String> friends; // 朋友 private Map<String, BigDecimal> salary; //年收入 Map }
最终Java POJO对象序列化为以下的字符串,属性是按照JsonPropertyOrder注解定义的顺序序列化的("salary","name","age","hobbies","friends")。若是不使用JsonPropertyOrder指定顺序,默认是按照Java类成员变量的声明顺序进行序列化。app
{ "salary" : { "2000" : 10000000, "2010" : 62000000, "2020" : 112400000 }, "name" : "乔丹", "age" : 45, "hobbies" : [ "高尔夫球", "棒球" ], "friends" : [ "kobe", "curry", "james" ] }
可使用下面的代码将PlayerStar对象序列化为字符串框架
//getInstance是一个为PlayerStar各属性赋值的初始化方法,能够参考本系列文章第一节:基础数据准备 PlayerStar jordan = PlayerStar.getInstance(); //ObjectMapper做为Jackson的API工具类存在 ObjectMapper mapper = new ObjectMapper(); String jsonInString2 = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jordan); System.out.println(jsonInString2);
使用@JsonPropertyOrder(alphabetic = true)
定义Java类成员变量的序列化顺序工具
@JsonPropertyOrder(alphabetic = true) public class PlayerStar { //成员变量定义和上文一致 }
在英语字母表中,age(a开头) > friends(f开头) ->hobbies(h开头),以此类推,因此最终JSON序列化结果以下:spa
{ "age" : 45, "friends" : [ "kobe", "curry", "james" ], "hobbies" : [ "高尔夫球", "棒球" ], "name" : "乔丹", "salary" : { "2000" : 10000000, "2010" : 62000000, "2020" : 112400000 } }
本文转载注明出处(必须带链接,不能只转文字):字母哥博客 - zimug.comcode