简介
Jackson是基于Java平台的一套数据处理工具,被称为”最好的Java Json解析器”。它可以使我们高效、简便的处理json字符串。
添加 pom
依赖
<dependency>
<groupId>com.rick.common</groupId>
<artifactId>sharp-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
对象转json字符串
public static String toJson(Object obj) throws IOException;
@Test
public void testToJson() throws IOException {
Dept dept = new Dept();
dept.setId(1L);
dept.setName("Dev");
dept.setParentId(2L);
String json = JsonUtils.toJson(dept);
System.out.println(json);
}
控制台输出
{"id":1,"name":"Dev","parentId":2}
json字符串转普通对象
public static <T> T toObject(String json, Class<T> clazz) throws IOException;
范型对象
@Test
public void testToPOJO() throws IOException {
Dept dept = JsonUtils.toObject("{\"id\":1,\"name\":\"Dev\",\"parentId\":2}", Dept.class);
Assert.assertEquals(1L, dept.getId().longValue());
}
Map对象
@Test
public void testToMap() throws IOException {
Map dept = JsonUtils.toObject("{\"id\":1,\"name\":\"Dev\",\"parentId\":2}", Map.class);
// dept.get("id") Integer类型
Assert.assertEquals(1, dept.get("id"));
}
List对象
@Test
public void testToList() throws IOException {
List list = JsonUtils.toObject("[{\"id\":1,\"name\":\"Dev\",\"parentId\":2}]", List.class);
// dept.get("id") Integer类型
Assert.assertEquals(1, ((Map)list.get(0)).get("id"));
}
json字符串转List
利用TypeReference,构造类型引用对象
@Test
public void testToListWithGenerics1() throws IOException {
TypeReference<List<Dept>> typeRef = new TypeReference<List<Dept>>() {};
List<Dept> list = JsonUtils.toObject("[{\"id\":1,\"name\":\"Dev\",\"parentId\":2}]", typeRef);
Assert.assertEquals(1L, list.get(0).getId().longValue());
}
底层依赖利用JavaType实现
public static <T> List<T> toList(String json, Class<T> clazz) throws IOException;
@Test
public void testToListWithGenerics2() throws IOException {
List<Dept> list = JsonUtils.toList("[{\"id\":1,\"name\":\"Dev\",\"parentId\":2}]", Dept.class);
Assert.assertEquals(1L, list.get(0).getId().longValue());
}
json字符串转JsonNode
转 JsonNode后
,操作对象比较转 Map
List
对象更加的方便
public static JsonNode toJsonNode(String json) throws IOException;
list的Json字符串转JsonNode
@Test
public void testListStringToJsonNode() throws IOException {
JsonNode jsonNode = JsonUtils.toJsonNode("[{\"id\":1,\"name\":\"Dev\",\"parentId\":2}]");
Assert.assertEquals(1L, jsonNode.get(0).get("id").longValue());
}
对象的Json字符串转JsonNode
@Test
public void testObjectStringToJsonNode() throws IOException {
JsonNode jsonNode = JsonUtils.toJsonNode("{\"id\":1,\"name\":\"Dev\",\"parentId\":2}");
Assert.assertEquals(1L, jsonNode.get("id").longValue());
}
对象转JsonNode
@Test
public void testObjectToJsonNode() throws IOException {
Dept dept = new Dept();
dept.setId(1L);
dept.setName("Dev");
dept.setParentId(2L);
JsonNode jsonNode = JsonUtils.toJsonNode(dept);
Assert.assertEquals(1L, jsonNode.get("id").longValue());
}
Map转JsonNode
@Test
public void testMapToJsonNode() {
String id = "1";
Map<String, String> params = new HashMap<>();
params.put("id", id);
JsonNode jsonNode = JsonUtils.toJsonNode(params);
Assert.assertEquals(1L, jsonNode.get("id").asLong());
}