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]