JAVA操作Json的ObjectMapper类
-
市面上用于在 Java 中解析 Json 的第三方库,随便一搜不下几十种,其中的佼佼者有 Google 的 Gson以及本文的 jackson。
-
三者不相伯仲,随着掌握一个都能满足项目中的 json 解析操作,因为 Spring Boot Web 组件默认使用的是 jackson,所以掌握 Jackjson 是非常有必要的。
package com.zving;
import org.codehaus.jackson.map.ObjectMapper;
/**
* 学习ObjectMapper类
*
* @author Clover
*/
public class JacksonTester {
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
//指定遇到date按照这种格式转换
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
mapper.setDateFormat(fmt);
String jsonString = "";
stringToStudent(mapper, jsonString);
studentToString(mapper, jsonString);
stringToStudentList(mapper, jsonString);
}
/**
* 字符串转实体类
*
* @param mapper
* @param jsonString
*/
public static void stringToStudent(ObjectMapper mapper, String jsonString) {
jsonString = "{\"id\":1001,\"name\":\"Tom\",\"info\":\"一个小男孩\"}";
try {
Student student = mapper.readValue(jsonString, Student.class);
System.out.println(student);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 实体类转字符串
*
* @param mapper
* @param jsonString
*/
public static void studentToString(ObjectMapper mapper, String jsonString) {
Student student = new Student();
student.setId(1002);
student.setName("李四");
student.setInfo("一个小女孩");
try {
jsonString = mapper.writeValueAsString(student);
System.out.println(jsonString);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 字符串转 List<实体类>
*
* @param mapper
* @param jsonString
*/
public static void stringToStudentList(ObjectMapper mapper, String jsonString) {
jsonString = "[{\"id\":1001,\"name\":\"Tom\",\"info\":\"一个小男孩\"},
{\"id\":1002,\"name\":\"Jane\",\"info\":\"一个小女孩\"}]";
try {
Student[] stu = mapper.readValue(jsonString, Student[].class);
for (Student student : stu) {
System.out.println(student);
}
String ss = mapper.writeValueAsString(stu);
System.out.println(ss);
} catch (Exception e) {
e.printStackTrace();
}
}
}