当前位置: java基础教程 > 23-json > 阅读正文

jackson — json与java转换

2021.3.22.   681 次   1505字

json 解析器概念:是将 json 转换为其他语言的工具

常见的 json 解析器有:Jsonlib,Gson,fastjson,jackson

这里我们学习 jackson,这是 springmvc 框架自带的 json 解析器。

导入Jar包或坐标

1.下载 jar 包,点击这里 ,并导入项目中(3个)

maven导入如下坐标

 <dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-core</artifactId>
     <version>2.7.3</version>
   </dependency>
  <dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.7.3</version>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.7.3</version>
  </dependency>
2.创建对应的实体类,准备转换

Java对象转换为Json对象

注意 : 请确保你的Java对象是bean对象, 非标准对象可能无法转换!

1.实例化对象(这里假设为 person)
Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");
2.创建 Jackson 的核心对象 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
3.开始转换

第一种转换写出到文件:writeValue(参数1多种重载, Object)

①File:写出到指定文件②Writer:字符输出流③OutputStream:字节输出流

此方法, 可以直接如果使用 response.getWriter() 作为第一个参数可直接写回客户端

mapper.writeValue(new File("d:a.txt"),p);

第二种转换直接获取:writeValueAsString(Object object)

String json = mapper.writeValueAsString(p);
//{"name":"张三","age":23,"gender":"男"}

对时间日期类型的值,需要在class的属性中加上注解,以便忽略或格式化

  • @JsonIgnore // 忽略该属性
  • @JsonFormat(pattern = “yyyy-MM-dd”) //pattern是自定义格式

(对 list 对象转换后是一个数组,对 map 对象转换后是普通的 json 对象)

Json对象转换为Java对象

1.初始化 json 字符串

这里的转义字符是 idea 自动添加的

String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";
2.创建ObjectMapper对象
ObjectMapper mapper = new ObjectMapper();
3.开始转换,并打印结果

这里使用 mapper.readValue 方法

Person person = mapper.readValue(json, Person.class);
System.out.println(person);
//Person{name='张三', age=23, gender='男'}

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群