Jackson-ObjectMapper类
精华
小牛编辑
133浏览
2023-03-14
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 cn.xnip.jackson;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
/**
* 小牛知识库网 - https://www.xnip.cn
*/
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+ " ]";
}
}