共计 2021 个字符,预计需要花费 6 分钟才能阅读完成。
1. 入门案例
package com.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 {
/**
* 1. 通过测试类 实现对象与 JSON 之间的转化
* 重点常识:
* 1. 对象转化 JSON 获取所有的 getXXX() 办法~~~~ 去除 get~~~~~ 首字母小写~~ 造成属性
* 2.JSON 转化为对象 利用 Class 的反射机制实例化对象~~~~ 获取 json 中的属性
* ~~~~ 拼接 setXXX 办法~~~~~ 调用对象的 setXXX(arg) 办法为对象赋值 */
@Test
public void test01() throws JsonProcessingException {ItemDesc itemDesc = new ItemDesc();
itemDesc.setItemId(100L).setItemDesc("转化测试").setCreated(new Date());
ObjectMapper objectMapper = new ObjectMapper();
//1. 将对象转化为 JSON
String json = objectMapper.writeValueAsString(itemDesc);
System.out.println(json);
//2. 将 JSON 转化为对象 反射思维
ItemDesc itemDesc2 = objectMapper.readValue(json, ItemDesc.class);
System.out.println(itemDesc2.getCreated());
}
// 汇合 转 json
@Test
public void testList() throws JsonProcessingException {List<ItemDesc> list = new ArrayList<>();
list.add(new ItemDesc().setItemId(100L).setItemDesc("案例 1"));
list.add(new ItemDesc().setItemId(100L).setItemDesc("案例 1"));
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(list);
System.out.println(json);
List list2 = objectMapper.readValue(json, list.getClass());
System.out.println(list2);
}
}
2. 封装 ObjectMapperUtil
package com.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jt.pojo.ItemDesc;
public class ObjectMapperUtil {private static final ObjectMapper MAPPER = new ObjectMapper();
//1. 对象转化为 JSON
public static String toJSON(Object obj){
try {return MAPPER.writeValueAsString(obj);
} catch (JsonProcessingException e) {
// 将查看异样. 转化为运行时异样 之后被全局异样解决机制解决
e.printStackTrace(); // 日志打印....
throw new RuntimeException(e);// 抛出运行时异样,交给本人写好的全局异样解决
}
}
//2.JSON 转化为对象 用户指定什么样的类型, 返回什么样的对象????
// 传什么就返回什么 --- 用泛型来实现 <T> 示意定义泛型,java 中先定义,后应用
public static <T> T toObj(String json,Class<T> target){
try {return MAPPER.readValue(json, target);
} catch (JsonProcessingException e) {e.printStackTrace();
throw new RuntimeException(e);
}
}
}
正文完