html欧美网站模板,怎么建立一个公司的网站吗,百度官网首页下载,网站开发与维护工资多少目录 第一章、Jackson 介绍1.1#xff09;Jackson 依赖导入1.2#xff09;转义字符介绍介绍 第二章、Jackson 与其他格式数据的转换2.1#xff09;其他数据转为JSON格式数据#xff08;生成JSON#xff09;①对象转json#xff0c;比如我有一个user对象②list转json③map… 目录 第一章、Jackson 介绍1.1Jackson 依赖导入1.2转义字符介绍介绍 第二章、Jackson 与其他格式数据的转换2.1其他数据转为JSON格式数据生成JSON①对象转json比如我有一个user对象②list转json③map转json③复杂map转json 2.2JSON格式数据转为其他数据(解析JSON)①json字符串信息 写入转为 对象②将JSON文件转为对象③字节输入流读取json文件后再转为对象④JSON字符串 转为 Map⑤复杂JSONjson数组中有多个对象 转为 对象数组⑤复杂JSONjson数组中有多个对象 转为List 第三章、其他使用3.1忽略不存在的字段3.2使用jackson进行日期格式化3.3Jackson注解①JsonIgnore②JsonGetter③JsonSetter 友情提醒: 先看文章目录大致了解文章知识点结构点击文章目录可直接跳转到文章指定位置。 第一章、Jackson 介绍
1.1Jackson 依赖导入
将不同的数据格式与JSON格式进行转换需要依赖第三方包
JSON //json官方提供的
FastJson //阿里巴巴提供
Jackson //springboot启动包自带
GSON //Google提供的
hutool json //hutool 工具第三方包有很多选择一种就好了这里选择Jackson ①导入依赖 Jackson 解析JSONSpringMVC内置的解析器就是这个 spring-boot-starter-web启动包内嵌了Jackson 依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion2.7.16/version/dependency或者也可以自己导入依赖包
maven依赖:
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.9.6/version
/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-annotations/artifactIdversion2.9.6/version
/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.6/version
/dependency②Jackson包中ObjectMapper类介绍 1、常用方法1readValue() 方法可以进行 JSON 的反序列化操作就是将其他格式数转为Java对象 2、常用方法2writeValue() 方法可以进行 JSON 的序列化操作就是将 Java 对象转换成 JSON 字符串
1.2转义字符介绍介绍
Java中看到的JSON字符经常带有斜杠其实是转义符例如
\r 将光标定位到当前行的开头不会跳到下一行。
\n 换到下一行的开头。
\t 制表符将光标移到下一个制表符的位置就像在文档中用Tab键一样。
\\ 表示反斜杠字符由于在Java代码中的反斜杠是转义字符多加一个反斜杠就代表其本身\表示双引号字符Java代码中双引号表示字符串的开始和结束包含在字符串中的双引号需要使用 \ 进行转义
String str {\name\:\bbb\,\id\:\1234\}
其实是 str {name:bbb,id:1234}第二章、Jackson 与其他格式数据的转换
2.1其他数据转为JSON格式数据生成JSON
首先我有个User类
package com.test.springboot.model;
public class User {private String name;private int age;private ListString skillsList;
//省略getter setter toString
①对象转json比如我有一个user对象
使用方法objectMapper.writeValueAsString(类名); public static void objectToJson() {User user new User();user.setName(bbb);user.setAge(18);user.setSkillsList(Arrays.asList(java, python));// 创建ObjectMapper对象ObjectMapper objectMapper new ObjectMapper();String json null;try {// 将对象转换为JSON字符串json objectMapper.writeValueAsString(user);} catch (JsonProcessingException e) {e.printStackTrace();}//{name:bbb,age:18,skillsList:[java,python]}System.out.println(json);}②list转json public void listToJson() {ListString list new ArrayList();list.add(item1);list.add(item2);list.add(item3);System.out.println(list---list);ObjectMapper mapper new ObjectMapper();try {String json mapper.writeValueAsString(list);System.out.println(json---json);} catch (JsonProcessingException e) {e.printStackTrace();}}③map转json public void mapToJson() {MapString, String map new HashMap();map.put(名字, 薄饼);map.put(年龄, 12);ObjectMapper mapper new ObjectMapper();try {String json mapper.writeValueAsString(map);System.out.println(json);} catch (JsonProcessingException e) {e.printStackTrace();}}③复杂map转json public void mapListToJson() {//rootMap集合存储信息MapString, Object rootMap new HashMap();rootMap.put(notificationType, call_service);//serviceMap集合存储信息MapString, Object serviceMap new HashMap();serviceMap.put(appKey, Data.appKey);//paraList中存储多个alaMapListMapString, Object paraList new ArrayList();MapString, Object alaMap new HashMap();alarmMap.put(a, zh110);alarmMap.put(b, zh120);alarmMap.put(notify, [Info1|Info2|Info3]);paraList.add(alaMap);serviceMap.put(notifications, paraList);rootMap.put(call_service, serviceMap);ObjectMapper mapper new ObjectMapper();try {String rootMapJson mapper.writeValueAsString(rootMap);System.out.println(rootMapJson);} catch (JsonProcessingException e) {e.printStackTrace();}}2.2JSON格式数据转为其他数据(解析JSON)
①json字符串信息 写入转为 对象
首先我有个User类
package com.test.springboot.model;
public class User {private String name;private int age;private ListString skillsList;
//省略getter setter toString
使用objectMapper.readValue(json, User.class);方法前面传入json字符串后面是类 //json字符串信息 写入转为 对象public static void jsonToObject(){String json {\name\:\bbb\,\age\:18,\skillsList\:[\java\,\python\,\php\]};ObjectMapper objectMapper new ObjectMapper();User user null;try {user objectMapper.readValue(json, User.class);} catch (JsonProcessingException e) {e.printStackTrace();}//User(namebbb, age18, skillsList[java, python, php])System.out.println(user);//{name:bbb,age:18,skillsList:[java,python,php]}System.out.println(json);}②将JSON文件转为对象
001-test/src下新建json文件内容如下
{name : bbb,age : 18,skillsList : [java,python]
}如图 使用readValue方法
public static void jsonFileToObject() {File file new File(001-test/src/test.json);ObjectMapper objectMapper new ObjectMapper();User user null;try {user objectMapper.readValue(file, User.class);} catch (IOException e) {e.printStackTrace();}//User(namebbb, age18, skillsList[java, python])System.out.println(user);}③字节输入流读取json文件后再转为对象 //通过字节输入流FileInputStream 读取json文件后再转为对象public static void jsonFileInputStrToObject() {FileInputStream input null;try {input new FileInputStream(001-test/src/test.json);} catch (FileNotFoundException e) {e.printStackTrace();}ObjectMapper objectMapper new ObjectMapper();User user null;try {user objectMapper.readValue(input, User.class);} catch (IOException e) {e.printStackTrace();}//User{namebbb, age18, skillsList[java, python]}System.out.println(user);}④JSON字符串 转为 Map //JSON字符串 转为 Mappublic static void jsonToMap() {String json {\name\:\bbb\,\age\:18,\skillsList\:[\java\,\python\,\php\]};ObjectMapper objectMapper new ObjectMapper();MapString, Object objectMap null;try {objectMap objectMapper.readValue(json, new TypeReferenceMapString, Object() {});} catch (JsonProcessingException e) {e.printStackTrace();}//{namebbb, age18, skillsList[java, python, php]}System.out.println(objectMap);//bbbSystem.out.println(objectMap.get(name));}⑤复杂JSONjson数组中有多个对象 转为 对象数组
readValue方法 public static void jsonArrToObject() {String json [{\name\:\bbb\,\age\:18,\skillsList\:[\java\,\python\]}, {\name\:\aaa\,\age\:15,\skillsList\:[\唱跳\,\rap\]}];ObjectMapper objectMapper new ObjectMapper();User[] user new User[0];try {user objectMapper.readValue(json, User[].class);} catch (JsonProcessingException e) {e.printStackTrace();}//User{namebbb, age18, skillsList[java, python]}//User{nameaaa, age15, skillsList[唱跳, rap]}for (User user1 : user) {System.out.println(user1);}}⑤复杂JSONjson数组中有多个对象 转为List
readValue方法 public static void jsonListToList() {String json [{\name\:\bbb\,\age\:18,\skillsList\:[\java\,\python\]}, {\name\:\aaa\,\age\:15,\skillsList\:[\唱跳\,\rap\]},{\name\:\ccc\,\age\:10,\skillsList\:[\biu\,\pon\]}];ObjectMapper objectMapper new ObjectMapper();ListUser list null;try {list objectMapper.readValue(json, new TypeReferenceListUser(){});} catch (JsonProcessingException e) {e.printStackTrace();}// User{namebbb, age18, skillsList[java, python]}// User{nameaaa, age15, skillsList[唱跳, rap]}// User{nameccc, age10, skillsList[biu, pon]}for (User user1 : list) {System.out.println(user1);}}第三章、其他使用
3.1忽略不存在的字段
如果 JSON出现了 Java 类中不存在的属性转 Java 对象时会报com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException 异常。 使用configure方法设置false来忽略 public static void jsonIgn() {String json {\需要忽略的\:\需要忽略\,\name\:\bbb\,\age\:18,\skillsList\:[\java\,\python\]};ObjectMapper objectMapper new ObjectMapper();//忽略字段设置objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);User usernull;try {user objectMapper.readValue(json, User.class);} catch (JsonProcessingException e) {e.printStackTrace();}//User{namebbb, age18, skillsList[java, python]}System.out.println(user);}3.2使用jackson进行日期格式化
①添加数据绑定支持包依赖
dependencygroupIdcom.fasterxml.jackson.datatype/groupIdartifactIdjackson-datatype-jsr310/artifactIdversion2.13.3/version
/dependency②在类中使用注解JsonFormat
Data
AllArgsConstructor
NoArgsConstructor
public class Order {private Integer id;JsonFormat(pattern yyyy年MM月dd日 HH时mm分ss秒,timezone Asia/Shanghai)private Date date;JsonFormat(pattern yyyy-MM-dd HH:mm:ss,timezone Asia/Shanghai)private LocalDateTime localDateTime;
}③定义 ObjectMapper 时通过 findAndRegisterModules() 方法来注册依赖。然后再互相转换
//Jackson 日期格式化
public class JsonToJava9 {public static void main(String[] args) throws IOException {ObjectMapper objectMapper new ObjectMapper().findAndRegisterModules();Order order new Order();order.setId(1);order.setDate(new Date());order.setLocalDateTime(LocalDateTime.now());//将java转换成json字符串String json objectMapper.writeValueAsString(order);//{id:1,date:2023年07月28日 15时14分01秒,localDateTime:2023-07-28 15:14:01}System.out.println(json);//将json字符串转换成java对象Order orderObject objectMapper.readValue(json, Order.class);//Order(id1, dateFri Jul 28 15:15:59 CST 2023, localDateTime2023-07-28T15:15:59)System.out.println(orderObject);}
}3.3Jackson注解
①JsonIgnore
使用 JsonIgnore可以忽略某个 Java 对象中的属性它将不参与 JSON 的序列化与反序列化
②JsonGetter
使用 JsonGetter可以在对 Java 对象进行 JSON 序列化时自定义属性名称。写在getter方法上 JsonGetter(value catName)public String getName() {return name;}输出结果name 已经设置成了 catName
{age:2,catName:Tom}③JsonSetter
使用 JsonSetter可以在对 JSON 进行反序列化时设置 JSON 中的 key 与 Java 属性的映射关系。用在属性上
比如我json中是这样catName
String json {\age\:2,\catName\:\Tom\};为了我这个name能对应上json内容通过注解设置成catName JsonSetter(value catName)public void setName(String name) {this.name name;}