工作中容易遇到json转化的问题,一下是一些测试和总结,可以长期运用在项目中,特刺记下
maven依赖
com.fasterxml.jackson.core
jackson-databind
2.9.5
com.fasterxml.jackson.core
jackson-annotations
2.9.5
com.fasterxml.jackson.core
jackson-core
2.9.5
工具类
package info.lumanman.JacksonUtil;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonUtil {
private final static ObjectMapper objectMapper=new ObjectMapper();
private JacksonUtil() {
}
public static ObjectMapper getInstance(){
return objectMapper;
}
/**
* javaBean、列表数组转换为json字符串
*/
public static String obj2json(Object obj) throws Exception {
return objectMapper.writeValueAsString(obj);
}
/**
* javaBean、列表数组转换为json字符串,忽略空值(int会保持0)
*/
public static String obj2jsonIgnoreNull(Object obj) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper.writeValueAsString(obj);
}
/**
* json 转JavaBean
*/
public static T json2pojo(String jsonString,Class clazz) throws Exception {
return objectMapper.readValue(jsonString,clazz);
}
/**
* json字符串转换为map
*/
public static Map json2map(String jsonString) throws Exception {
return objectMapper.readValue(jsonString,Map.class);
}
/**
*json字符串转换为map
*/
public static Map json2map(String jsonString, Class clazz) throws Exception {
Map> map=objectMapper.readValue(jsonString, new TypeReference
实体类
package info.lumanman.JacksonUtil;
import java.util.Date;
import java.util.List;
public class School {
private int a;
private String name;
private String address;
private Date createdDate;
private List studentList;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public List getStudentList() {
return studentList;
}
public void setStudentList(List studentList) {
this.studentList = studentList;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
@Override
public String toString() {
return "School [a=" + a + ", name=" + name + ", address=" + address + ", createdDate=" + createdDate
+ ", studentList=" + studentList + "]";
}
}
package info.lumanman.JacksonUtil;
public class Student {
private String name;
private int age;
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
测试类
package info.lumanman.JacksonUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
public class JacksonTest {
/**
* javaBean、列表数组转换为json字符串
*/
@Test
public void obj2jsonTest() throws Exception {
School school=new School();
school.setAddress("安徽");
school.setName("圣泉中学");
Student student=new Student();
student.setAge(18);
student.setName("张三");
Student student2=new Student();
student2.setAge(18);
student2.setName("张三");
List list=new ArrayList();
list.add(student);
list.add(student2);
school.setStudentList(list);
String json=JacksonUtil.obj2json(school);
System.out.println(json);
}
/**
* javaBean、列表数组转换为json字符串,忽略空值(int会保持0)
*/
@Test
public void obj2jsonIgnoreNullTest() throws Exception {
School school=new School();
school.setAddress("安徽");
school.setName("圣泉中学");
Student student=new Student();
student.setAge(18);
student.setName("张三");
Student student2=new Student();
student2.setAge(18);
student2.setName("张三");
List list=new ArrayList();
list.add(student);
list.add(student2);
school.setStudentList(list);
String json=JacksonUtil.obj2jsonIgnoreNull(school);
System.out.println(json);
}
/**
* json 转JavaBean
*/
@Test
public void json2pojoTest() throws Exception {
String jsonString="{\"a\": 0,"+
"\"name\": \"圣泉中学\","+
"\"address\": \"安徽\","+
"\"createdDate\": null,"+
"\"studentList\": [{"+
"\"name\": \"张三\","+
"\"age\": 18"+
"},"+
"{"+
"\"name\": \"张三\","+
"\"age\": 18}]}";
School school=JacksonUtil.json2pojo(jsonString,School.class);
System.out.println(school);
}
/**
* json字符串转换为map
*/
@Test
public void json2mapClassTest() throws Exception {
String jsonString="{\"student\": {"+
"\"name\": \"张三\","+
"\"age\": 18}}";
Map map=JacksonUtil.json2map(jsonString,Student.class);
System.out.println(map.get("student"));
}
/**
*json字符串转换为map
*/
@Test
public void json2mapTest() throws Exception {
String jsonString="{\"a\": 0,"+
"\"name\": \"圣泉中学\","+
"\"address\": \"安徽\","+
"\"createdDate\": null,"+
"\"studentList\": [{"+
"\"name\": \"张三\","+
"\"age\": 18"+
"},"+
"{"+
"\"name\": \"张三\","+
"\"age\": 18}]}";
Map map=JacksonUtil.json2map(jsonString);
System.out.println(map.get("studentList"));
}
/**
* 与javaBean json数组字符串转换为列表
*/
@Test
public void json2listTest() throws Exception {
String jsonString="[{\"name\": \"张三\","+
"\"age\": 18"+
"},"+
"{"+
"\"name\": \"张三\","+
"\"age\": 18}]";
List studentList=JacksonUtil.json2list(jsonString,Student.class);
System.out.println(studentList);
}
/**
* map 转JavaBean
* @param map
* @return
*/
@Test
public void map2pojoTest() throws Exception {
Map map=new HashMap();
map.put("a", 0);
map.put("name", "圣泉中学");
map.put("address", "安徽");
map.put("createdDate", null);
Student student=new Student();
student.setAge(18);
student.setName("张三");
Student student2=new Student();
student2.setAge(18);
student2.setName("张三");
List list=new ArrayList();
list.add(student);
list.add(student2);
map.put("studentList",list);
School school=JacksonUtil.map2pojo(map,School.class);
System.out.println(school);
}
/**
* map 转json
* @param map
* @return
*/
@Test
public void mapToJsonTest() throws Exception {
Map map=new HashMap();
map.put("a", 0);
map.put("name", "圣泉中学");
map.put("address", "安徽");
map.put("createdDate", null);
Student student=new Student();
student.setAge(18);
student.setName("张三");
Student student2=new Student();
student2.setAge(18);
student2.setName("张三");
List list=new ArrayList();
list.add(student);
list.add(student2);
map.put("studentList",list);
String json=JacksonUtil.mapToJson(map);
System.out.println(json);
}
/**
* json 转List>
* @param map
* @return
*/
@Test
public void json2listMapTest() throws Exception {
String jsonString="[{"+
"\"name\": \"张三\","+
"\"age\": 18"+
"},"+
"{"+
"\"name\": \"张三\","+
"\"age\": 18}]";
List> list=JacksonUtil.json2listMap(jsonString);
System.out.println(list);
}
/**
* json文件 转pojo
* 注意这里的file文件最好是新建的notepadd++,并保存为UTF-8的文件,防止乱码
* @param map
* @return
*/
@Test
public void file2pojoTest() throws Exception {
File file=new File("C:\\Users\\WM\\Desktop\\utf-8报文.txt");
School school=JacksonUtil.file2pojo(file,School.class);
System.out.println(school);
}
}
UTF-8文件内容
{
"a": 0,
"name": "圣泉中学",
"address": "安徽",
"createdDate": null,
"studentList": [{
"name": "张三",
"age": 18
},
{
"name": "张三",
"age": 18
}]
}
主要是jackson工具类的使用,可以用maven依赖把源码下下来,看看源码,注释,帮助理解