共计 1794 个字符,预计需要花费 5 分钟才能阅读完成。
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