文章目录
  1. 1. 简介
  2. 2. 依赖说明
  3. 3. 把json文本解析为java对象
  4. 4. 把java对象序列化为json文本
  5. 5. 把json文本解析为Jackson JsonNode
  6. 6. 把json文本解析为Java List
  7. 7. 把json文件解析为Java 数组
  8. 8. 把json文本解析为Java Map

简介

Jackson是一个解析json的java库。springboot默认引用了这个json库。Jackson基于Apache-2.0 license开源,在github上有超过3k的star。 Jackson 在 mvnrepository.com 网站上的json分类里排名第一。如此优秀的开源库,值得我们去学习它的使用方法。

依赖说明

spring-boot-starter-web里已经通过 spring-boot-starter-josn 依赖了 jackson-databind包。 对于springboot的web项目,我们可以直接使用Jackson。 如果没有使用springboot可以在pom.xml中通过以下方式引入jar包。

1
2
3
4
5
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.1</version>
</dependency>

把json文本解析为java对象

先定义一个java类 Student.java

1
2
3
4
5
6
7
import lombok.Data;

@Data
public class Student {
String name;
Integer age;
}

然后通过以下代码完成json到java对象的转换

1
2
3
4
5
6
7
8
9
10
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Simple {
ObjectMapper objectMapper = new ObjectMapper();
public void testJson2Java() throws JsonProcessingException {
String str = "{\"name\":\"tom\",\"age\":16}";
Student student = objectMapper.readValue(str,Student.class);
System.out.println(student);
}
}

把java对象序列化为json文本

关键方法:ObjectMapper.writeValueAsString, 代码示例:

1
2
3
4
Student student = new Student();
student.setAge(11);
student.setName("jack");
String json = objectMapper.writeValueAsString(student);

把json文本解析为Jackson JsonNode

1
2
3
String str = "{\"name\":\"tom\",\"age\":16}";
JsonNode jsonNode = objectMapper.readTree(str);
String name = jsonNode.get("name").asText();

把json文本解析为Java List

借助 TypeReference

1
2
String str = "[{\"name\":\"tom\",\"age\":16},{\"name\":\"lucy\",\"age\":15}]";
List<Student> list = objectMapper.readValue(str, new TypeReference<List<Student>>(){});

把json文件解析为Java 数组

1
2
3
4
String str = "[{\"name\":\"tom\",\"age\":16},{\"name\":\"lucy\",\"age\":15}]";
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.USE_JAVA_ARRAY_FOR_JSON_ARRAY, true);
Student[] students = objectMapper.readValue(str, Student[].class);

把json文本解析为Java Map

借助 TypeReference

1
2
String str = "{\"name\":\"tom\",\"age\":16}";
Map<String,Object> map = objectMapper.readValue(str, new TypeReference<Map<String,Object>>(){});
文章目录
  1. 1. 简介
  2. 2. 依赖说明
  3. 3. 把json文本解析为java对象
  4. 4. 把java对象序列化为json文本
  5. 5. 把json文本解析为Jackson JsonNode
  6. 6. 把json文本解析为Java List
  7. 7. 把json文件解析为Java 数组
  8. 8. 把json文本解析为Java Map