温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JSON框架Jackson中的属性序列化自定义与字母表排序是啥意思

发布时间:2021-12-21 09:38:15 来源:亿速云 阅读:282 作者:柒染 栏目:大数据

这期内容当中小编将会给大家带来有关JSON框架Jackson中的属性序列化自定义与字母表排序是啥意思,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库。有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制。它提供了很多的JSON数据处理方法、注解,也包括流式API、树模型、数据绑定,以及复杂数据类型转换等功能。

一、@JsonPropertyOrder属性排序

通过JsonPropertyOrder注解指定java POJO中各个成员变量的属性序列化顺序。

[@Data](https://my.oschina.net/difrik)
@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
  }
}

上述就是小编为大家分享的JSON框架Jackson中的属性序列化自定义与字母表排序是啥意思了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI