ObjectMapper Api 介绍
package com.jt.test;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jt.pojo.ItemDesc;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class TestObjectMapper {
private static final ObjectMapper MAPPER = new ObjectMapper();
@Test
public void test01(){
ItemDesc itemDesc = new ItemDesc();
itemDesc.setItemId(100L).setItemDesc("测试JSON转化").setCreated(new Date())
.setUpdated(itemDesc.getCreated());
try {
//1.将java对象转化为JSON
String json = MAPPER.writeValueAsString(itemDesc);
System.out.println(json);
//2.将JSON转化为对象 利用反射机制实例化对象 利用get/set方法为对象赋值
ItemDesc itemDesc2 = MAPPER.readValue(json, ItemDesc.class);
System.out.println(itemDesc2.toString()); //只输出当前对象的数据
//3.将集合信息转化为JSON List
List<ItemDesc> list = new ArrayList<>();
list.add(itemDesc);
String listJSON = MAPPER.writeValueAsString(list);
System.out.println(listJSON);
//将json转化为List集合
List<ItemDesc> list2 = MAPPER.readValue(listJSON,list.getClass());
System.out.println(list2);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
编辑工具API
package com.jt.unit;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ObjectMapperUtil {
//1.创建工具API对象
private static final ObjectMapper MAPPER = new ObjectMapper();
//2.封装API 将对象转化为JSON
public static String toJSON(Object object){
if(object == null){
throw new RuntimeException("传入对象不能为null");
}
try {
String json = MAPPER.writeValueAsString(object);
return json;
} catch (JsonProcessingException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
/**
* 3.将JSON串转化为对象 用户传递什么类型,则返回什么对象
* user.class User对象
*
*/
public static <T> T toObject(String json,Class<T> target){
//1.校验参数是否有效
if(json == null || "".equals(json) || target == null){
//参数有误.
throw new RuntimeException("参数不能为null");
}
//2.执行业务处理
try {
T t = MAPPER.readValue(json, target);
return t;
} catch (JsonProcessingException e) {
//将报错信息通知其他人
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
}