Jackson-ObjectMapper类

ObjectMapper是Jackson库的核心类。ObjectMapper提供用于在基本POJO(Java对象)之间或从通用JSON树模型(JsonNode)之间读取和写入JSON的功能,以及用于执行转换的相关功能。它也可以高度自定义,使用不同样式的JSON输出,并支持更高级的Object概念,例如多态。ObjectMapper还充当更高级ObjectReader和ObjectWriter类的工厂。

1 ObjectMapper类的构造方法

构造方法 说明
ObjectMapper() 默认构造函数。将根据需要构造默认的JsonFactory,使用SerializerProvider作为其SerializerProvider,并使用BeanSerializerFactory作为其SerializerFactory。
ObjectMapper(JsonFactory jf) 构造实例,该实例使用指定的JsonFactory构造JsonParser和/或JsonGenerator。
ObjectMapper(JsonFactory jf, SerializerProvider sp, DeserializerProvider dp) 构造实例,该实例使用指定的JsonFactory构造JsonParser和/或JsonGenerator,并使用给定的Provider程序访问序列化程序和反序列化程序。
protected ObjectMapper(ObjectMapper src) 保护的构造函数,主要用于支持copy()。

2 ObjectMapper类的示例

2.1 编写核心类

MainApp:

package com.yiidian.jackson;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class MainApp {

    public static void main(String args[]) {

        ObjectMapper mapper = new ObjectMapper();
        String jsonString = "{\"name\":\"eric\", \"age\":21}";

        try{
            //把JSON转换为Java对象
            Student student = mapper.readValue(jsonString, Student.class);
            System.out.println(student);

            //把Java对象为JSON
            jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(student);
            System.out.println(jsonString);
        }
        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 运行测试