Jackson-简单数据绑定
精华
小牛编辑
136浏览
2023-03-14
数据绑定API用于使用属性访问器或使用注解将JSON与POJO(普通Java对象)进行转换。它有两种类型。
- 简单数据绑定:在List,String,数值类型,布尔值和NULL对象之间来回转换JSON。
- 完全数据绑定:将JSON与任何Java类型相互转换。
ObjectMapper读取/写入两种类型的数据绑定的JSON。数据绑定是最方便的方法,类似于XML的JAXB解析器。
1 简单数据绑定的映射关系
简单数据绑定是指将JSON映射到Java核心数据类型。下表展示了JSON类型与Java类型之间的关系。
JSON类型 | Java类型 |
---|---|
object | LinkedHashMap<String,Object> |
array | ArrayList<Object> |
string | String |
整数 | Integer, Long or BigInteger |
小数 | Double / BigDecimal |
true | false | Boolean |
null | null |
2 简单数据绑定的示例
2.1 编写核心类
MainApp:
package cn.xnip.jackson;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* 小牛知识库网 - https://www.xnip.cn
*/
public class MainApp {
public static void main(String args[]){
MainApp tester = new MainApp();
try {
ObjectMapper mapper = new ObjectMapper();
Map<String,Object> studentDataMap = new HashMap<String,Object>();
int[] marks = {1,2,3};
Student student = new Student();
student.setAge(10);
student.setName("eric");
// Java对象类型
studentDataMap.put("student", student);
// String类型
studentDataMap.put("name", "eric");
// JBoolean类型
studentDataMap.put("verified", Boolean.FALSE);
// 数组类型
studentDataMap.put("marks", marks);
mapper.writeValue(new File("student.json"), studentDataMap);
//写出到student.json文件
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+ " ]";
}
}
2.2 运行测试
项目根目录生成student.json文件,内容如下:
{"student":{"name":"eric","age":10},"name":"eric","verified":false,"marks":[1,2,3]}