Data Binding API用于使用属性访问器或使用注释将JSON转换为POJO(Plain Old Java Object)和从POJO转换.它有两种类型.
简单数据绑定 - 将JSON转换为Java地图,列表,字符串,数字,布尔值和null对象.
完整数据绑定 - 将JSON转换为任何JAVA类型.
ObjectMapper为两种类型的数据绑定读取/写入JSON.数据绑定是最方便的方式,类似于XML的JAXB parer.
简单数据绑定
简单数据绑定是指JSON到JAVA的映射核心数据类型.下表说明了JSON类型与Java类型之间的关系.
Sr.否. | JSON类型 | Java类型 |
---|---|---|
1 | object | LinkedHashMap< String,Object> |
2 | array | ArrayList< Object> |
3 | string | String |
4 | complete number | 整数,长整数或大整数 |
5 | fractional number | Double/BigDecimal |
6 | true | false | 布尔值 |
7 | null | null |
让我们看看简单的数据绑定.这里我们将JAVA基本类型直接映射到JSON,反之亦然.
在 C:\> Jackson_WORKSPACE 中创建名为JacksonTester的java类文件.
文件:JacksonTester.java
import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import com.fasterxml.jackson.core.JsonParseException;import com.fasterxml.jackson.databind.JsonMappingException;import com.fasterxml.jackson.databind.ObjectMapper;public class JacksonTester { public static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { ObjectMapper mapper = new ObjectMapper(); MapstudentDataMap = new HashMap (); int[] marks = {1,2,3}; Student student = new Student(); student.setAge(10); student.setName("Mahesh"); // JAVA Object studentDataMap.put("student", student); // JAVA String studentDataMap.put("name", "Mahesh Kumar"); // JAVA Boolean studentDataMap.put("verified", Boolean.FALSE); // Array studentDataMap.put("marks", marks); mapper.writeValue(new File("student.json"), studentDataMap); //result student.json//{ // "student":{"name":"Mahesh","age":10}, // "marks":[1,2,3], // "verified":false, // "name":"Mahesh Kumar" //} studentDataMap = mapper.readValue(new File("student.json"), Map.class); System.out.println(studentDataMap.get("student")); System.out.println(studentDataMap.get("name")); System.out.println(studentDataMap.get("verified")); System.out.println(studentDataMap.get("marks")); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}class Student { private String name; private int age; public Student(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } }
验证结果
编译使用 javac 编译器的类如下:
C:\ _Jackson_WORKSPACE> javac JacksonTester.java
现在运行jacksonTester查看结果:
C:\ _Jackson_WORKSPACE> java JacksonTester
验证输出
{name=Mahesh, age=10}Mahesh Kumarfalse[1, 2, 3]
完整数据绑定
数据绑定泛型