Jackson 简明教程
Jackson - Data Binding
数据绑定 API 用于使用属性访问器或者批注将 JSON 转换为 POJO (Plain Old Java Object) 或者从 POJO 转换为 JSON。 它分为两种类型。
Data Binding API is used to convert JSON to and from POJO (Plain Old Java Object) using property accessor or using annotations. It is of two type.
-
Simple Data Binding - Converts JSON to and from Java Maps, Lists, Strings, Numbers, Booleans and null objects.
-
Full Data Binding - Converts JSON to and from any JAVA type.
ObjectMapper 为这两种数据绑定读取/写入 JSON。数据绑定是最方便的方法,并且类似于 XML 的 JAXB 解析器。
ObjectMapper reads/writes JSON for both types of data bindings. Data Binding is most convenient way and is analogus to JAXB parer for XML.
Simple Data Binding
简单数据绑定指向对 JAVA Core 数据类型的 JSON 映射。下表描述了 JSON 类型和 Java 类型之间的关系。
Simple data binding refers to mapping of JSON to JAVA Core data types. Following table illustrates the relationship between JSON types vs Java Types.
Sr. No. |
JSON Type |
Java Type |
1 |
object |
LinkedHashMap<String,Object> |
2 |
array |
ArrayList<Object> |
3 |
string |
String |
4 |
complete number |
Integer, Long or BigInteger |
5 |
fractional number |
Double / BigDecimal |
6 |
true |
false |
Boolean |
7 |
null |
让我们看看简单数据绑定在操作中。在这里,我们将直接把 JAVA 基本类型映射到 JSON 中,反之亦然。
Let’s see simple data binding in action. Here we’ll map JAVA basic types directly to JSON and vice versa.
在 C:>Jackson_WORKSPACE 中创建一个名为 JacksonTester 的 java 类文件。
Create a java class file named JacksonTester in C:\>Jackson_WORKSPACE.
文件:JacksonTester.java
File: 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();
Map<String,Object> studentDataMap = new HashMap<String,Object>();
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+ " ]";
}
}
Verify the result
Verify the result
使用 javac 编译器编译类,如下所示:
Compile the classes using javac compiler as follows:
C:\Jackson_WORKSPACE>javac JacksonTester.java
现在运行 jacksonTester 查看结果:
Now run the jacksonTester to see the result:
C:\Jackson_WORKSPACE>java JacksonTester
验证输出
Verify the Output
{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]