Jackson - 数据绑定
数据绑定 API 用于使用属性访问器或使用注释将 JSON 与 POJO(普通旧 Java 对象)相互转换。它有两种类型。
简单数据绑定- 将 JSON 与 Java 映射、列表、字符串、数字、布尔值和空对象相互转换。
完整数据绑定- 将 JSON 与任何 JAVA 类型相互转换。
ObjectMapper 读取/写入两种类型数据绑定的 JSON。数据绑定是最方便的方法,类似于 XML 的 JAXB 解析器。
简单的数据绑定
简单数据绑定是指将 JSON 映射到 JAVA Core 数据类型。下表说明了 JSON 类型与 Java 类型之间的关系。
| 先生。没有。 | JSON 类型 | Java类型 |
|---|---|---|
| 1 | 目的 | LinkedHashMap<字符串,对象> |
| 2 | 大批 | 数组列表<对象> |
| 3 | 细绳 | 细绳 |
| 4 | 完整号码 | 整数、长整型或大整数 |
| 5 | 分数 | 双精度/大十进制 |
| 6 | 真实 | 错误的 | 布尔值 |
| 7 | 无效的 | 无效的 |
让我们看看简单的数据绑定的实际应用。在这里,我们将 JAVA 基本类型直接映射到 JSON,反之亦然。
在C:\>Jackson_WORKSPACE中创建一个名为 JacksonTester 的 java 类文件。
文件:JacksonTester.java
导入java.io.File;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
导入 com.fasterxml.jackson.core.JsonParseException;
导入 com.fasterxml.jackson.databind.JsonMappingException;
导入 com.fasterxml.jackson.databind.ObjectMapper;
公共类 JacksonTester {
公共静态无效主(字符串参数[]){
JacksonTester 测试器 = new JacksonTester();
尝试 {
ObjectMapper 映射器 = new ObjectMapper();
Map<String,Object> StudentDataMap = new HashMap<String,Object>();
int[] 标记 = {1,2,3};
学生学生=新学生();
学生.setAge(10);
学生.setName("Mahesh");
// JAVA 对象
StudentDataMap.put("学生", 学生);
// JAVA 字符串
StudentDataMap.put("姓名", "Mahesh Kumar");
// JAVA 布尔值
StudentDataMap.put("已验证", Boolean.FALSE);
// 大批
StudentDataMap.put("分数", 分数);
mapper.writeValue(new File("student.json"), StudentDataMap);
//结果student.json
//{
// "学生":{"姓名":"马赫什","年龄":10},
// "标记":[1,2,3],
//“已验证”:假,
//“名称”:“马赫什·库马尔”
//}
StudentDataMap = mapper.readValue(new File("student.json"), Map.class);
System.out.println(studentDataMap.get("学生"));
System.out.println(studentDataMap.get("姓名"));
System.out.println(studentDataMap.get("已验证"));
System.out.println(studentDataMap.get("分数"));
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
班级学生{
私有字符串名称;
私有整数年龄;
公共学生(){}
公共字符串 getName() {
返回名称;
}
公共无效setName(字符串名称){
this.name = 名称;
}
公共 int getAge() {
返回年龄;
}
公共无效setAge(int年龄){
this.age = 年龄;
}
公共字符串 toString(){
return "学生[姓名:"+姓名+",年龄:"+年龄+"]";
}
}
验证结果
使用javac编译器编译类,如下所示:
C:\Jackson_WORKSPACE>javac JacksonTester.java
现在运行 jacksonTester 查看结果:
C:\Jackson_WORKSPACE>java JacksonTester
验证输出
{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]