Jackson是Spring Boot默认的JSON数据处理框架,然而其并不依赖于任何的Spring 库。有的小伙伴认为Jackson只能在Spring框架内应用,其实不是的,没有这种限度。它提供了很多的JSON数据处理办法、注解,也包含流式API、树模型、数据绑定,以及简单数据类型转换等性能。它尽管简略易用,但相对不是小玩具,更多的内容我会写成一个系列,5-10篇文章,请您持续关注我。

  • 《序列化与反序列化外围用法-JSON框架Jackson精解第一篇》

    • 一、根底数据筹备
    • 二、序列化办法
    • 三、反序列化办法
    • 四、字段重命名@JsonProperty
    • 五、疏忽null字段的序列化@JsonInclude
    • 六、疏忽指定的字段
  • 《非凡数据格式解决-JSON框架Jackson精解第2篇》

    • 一、从URL读取JSON数据
    • 二、Unknow Properties 赋值失败解决
    • 三、未赋值Java Bean序列化
    • 四、日期格式化

大家在平时进行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类成员变量的申明程序进行序列化。

{  "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序列化后果如下:

{  "age" : 45,  "friends" : [ "kobe", "curry", "james" ],  "hobbies" : [ "高尔夫球", "棒球" ],  "name" : "乔丹",  "salary" : {    "2000" : 10000000,    "2010" : 62000000,    "2020" : 112400000  }}

欢送关注我的博客,外面有很多精品合集

本文转载注明出处(必须带连贯,不能只转文字):字母哥博客 - zimug.com