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]
