Jackson第一篇
时间:2022-07-26
本文章向大家介绍Jackson第一篇,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
基础准备
Spring中已引入jackson相关依赖,无须在pom中再引入相关依赖,若再引入相关依赖,则会报错创建bean异常。
使用
写一个PlayerStar的实体类,实体类主要体现篮球明星的名字、年龄、业余爱好、朋友、年收入等信息,为了尽可能地演示Jackson的序列化与反序列化功能,将数组、List、Map都融合到这个类里面。并通过getInstance初始化篮球明星Jordan这个对象。
@Data
public class PlayerStar {
private String name;
private Integer age;
private String[] hobbies; //业余爱好,数组
private List<String> friends; // 朋友
private Map<String, BigDecimal> salary; //年收入 Map
//初始化一个对象用于测试
public static PlayerStar getInstance(){
PlayerStar playerStar = new PlayerStar();
playerStar.setName("乔丹");
playerStar.setAge(45);
playerStar.setHobbies(new String[]{"高尔夫球", "棒球"});
Map<String, BigDecimal> salary = new HashMap<String, BigDecimal>() {{
put("2000", new BigDecimal(10000000));
put("2010", new BigDecimal(62000000));
put("2020", new BigDecimal(112400000));
}};
playerStar.setSalary(salary);
playerStar.setFriends(Arrays.asList("kobe", "curry", "james"));
return playerStar;
}
}
序列化方法
@Test
void testObject2JSON() throws IOException {
//获取对象实例
PlayerStar player = PlayerStar.getInstance();
//ObjectMapper作为Jackson的API工具类存在
ObjectMapper mapper = new ObjectMapper();
//将player对象以JSON格式进行序列化,并将序列化结果写入文件
mapper.writeValue(new File("d:datajacksonplayer.json"), player);
//将player对象以JSON格式进行序列化为String对象
String jsonString = mapper.writeValueAsString(player);
System.out.println(jsonString);
//将player对象以JSON格式进行序列化为String对象(格式美化)
String jsonInString2 = mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(player);
System.out.println(jsonInString2);
}
反序列化方法
@Test
void testJSON2Object() throws IOException {
ObjectMapper mapper = new ObjectMapper();
//从文件中读取JSON字符串,反序列化为java对象
PlayerStar player = mapper.readValue(new File("d:datajacksonplayer.json"), PlayerStar.class);
System.out.println(player);
//将JSON字符串反序列化为java对象
String jsonInString = "{"name":"乔丹","age":45,"hobbies":["高尔夫球","棒球"]}";
PlayerStar jordan = mapper.readValue(jsonInString, PlayerStar.class);
System.out.println(jordan);
}
字段重命名
可以使用 @JsonProperty来影响序列化和反序列化对象属性的重命名。
@Data
public class PlayerStar {
@JsonProperty("playerName")
private String name; //将属性name序列化为playerName,同时影响反序列化
String jsonInString = "{"name":"乔丹","age":45,"hobbies":["高尔夫球","棒球"]}";
PlayerStar jordan = mapper.readValue(jsonInString, PlayerStar.class);
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 原创 | 图解git,用手绘图带你理解git中分支的原理和应用
- Android 天气APP(二十四)地图天气(上)自动定位和地图点击定位
- 3分钟短文:可能是Laravel模板最直白的用法了,没有之一
- Android 天气APP(二十三)增加灾害预警、优化主页面UI
- Android 天气APP(二十一)滑动改变UI、增加更多天气数据展示,最多未来15天天气预报
- Android 读取csv格式数据文件
- Android LitePal的简单使用
- Android RecyclerVIew列表使用 (编辑、单选、全选、删除、动画效果+附源码)
- Android TV 焦点控制
- Kotlin学习日志(四)函数
- Kotlin学习日志(三)控制语句
- Kotlin学习日志(一)TextView、Button、Toast的使用
- Kotlin学习日志(二)数据类型
- Toast提示工具类
- RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动