推广

属性序列化自定义与字母表排序-JSON框架Jackson精解第3篇

iseeyu2年前 (2024-02-21)推广145

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
  }
}

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

  • 本文转载注明出处(必须带连接,不能只转文字):字母哥博客。

觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

  • 《手摸手教你学Spring Boot2.0》
  • 《Spring Security-JWT-OAuth2一本通》
  • 《实战前后端分离RBAC权限管理系统》
  • 《实战SpringCloud微服务从青铜到王者》
  • 《VUE深入浅出系列》

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57195.html

相关文章

教你网站的隐藏链接有哪些危害。

教你网站的隐藏链接有哪些危害。

网站就像一个已经织完了的蜘蛛网,点与点的链接是那么的无缝和坚韧。随着黑帽手法早期的出现,隐藏链接就是当时风靡一时的作案手法,很多站长似乎并没有在关注网站的隐藏链接,有时候被搜索特别是谷歌降权了也不知何种原因,从而利用户在一般赏玩网页的工夫无法看到这个链接。简单说就是它指的是非惯例的URL链接...

淘宝电子交易凭证怎么填写(淘宝店铺电子凭证开通原因怎么填)

淘宝电子交易凭证怎么填写(淘宝店铺电子凭证开通原因怎么填)

输入买家提供的电子凭证,查看电子凭证对应核销情况,输入需要核销的份数(现阶段淘宝码支持一码多刷:即一个订单只发一个码,如果订单含多份,则一个码代表多份);...

《国资报告》独家解读2022年度《财富》世界500强上榜国企名单

《国资报告》独家解读2022年度《财富》世界500强上榜国企名单

小新说 8月3日,2022年《财富》世界500强排行榜发布,145家中国公司上榜(含我国台湾地区企业)。经梳理,今年共有99家国有企业上榜,较去年增加3家,其中:国务院国资委监管的央企(含局集团旗下的招商银行)47家;地方国资委监管的地方...

小型网站优化思路。

小型网站优化思路。

想很多从事工作的人员,每天必不可少的工作就是分析网站数据,然后从一大堆数据中挖掘出有效的数据,然后制定相应的策略。常见的优化的流程可以分三步走,依据这样的思路可以解决大部分企业网站的优化存在的问题。      第一.网站外部链接建设很合理,关键词排名却没有明显的浮动。      很多SEO人员在实...

为什么SEO优化方法要根据百度算法更新。

为什么SEO优化方法要根据百度算法更新。

做网站SEO优化离不开百度,毕竟百度仍然是使用频率非常高的搜索引擎,所以研究百度已经成为很多朋友的日常工作。百度近两年也发布了很多算法。你能一个一个地告诉我们吗? 网站SEO优化需要研究百度算法吗?如果作为新手,那么还是应该有一个初步的认识,知道什么是搜索引擎厌恶作弊。如果是专业的SEO优化从业者...

6个终身受用的顶级思维,不可不知

6个终身受用的顶级思维,不可不知

知乎上曾有人提问:“是什么造成了人与人的差距?” 其中高赞的一个答案是:“方式的不同。” 一个人的思维方式,关乎着他为人处世的格局,和人生的结局。 以下这6个顶级思维,能帮助你换种角度看世界,让你更加灵活地处理各种社会关系。 1.吉尔伯特法则 2.韦奇定理 3.卢维斯定...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片