json转化之jackson

工作中容易遇到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>(){});
        Map result=new HashMap();
        for(Map.Entry> entry:map.entrySet()){
            result.put(entry.getKey(),map2pojo(entry.getValue(),clazz));
        }
        return result;
    }

    /**
     *  与javaBean json数组字符串转换为列表
     */
    public static  List json2list(String jsonArrayStr, Class clazz) throws Exception {
        List> list=objectMapper.readValue(jsonArrayStr, new TypeReference>() {});
        List result=new ArrayList();
        for(Map map:list){
            result.add(map2pojo(map,clazz));
        }
        return result;
    }
    /**
     * map 转JavaBean
     * @param map
     * @return
     */
	public static  T map2pojo(Map map, Class clazz){
        return objectMapper.convertValue(map, clazz);
    }

    /**
     * map 转json
     * @param map
     * @return
     */
    public static String mapToJson(Map map) {
        try {
            return objectMapper.writeValueAsString(map);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }


    /**
     * json 转List>
     * @param map
     * @return
     */
    public static List> json2listMap(String json) {

        List> list = new ArrayList>();
        try {
            list =   objectMapper.readValue(json, List.class);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return list;
    }
    
    /**
     * json文件 转pojo
     * 注意这里的file文件最好是新建的notepadd++,并保存为UTF-8的文件,防止乱码
     * @param map
     * @return
     */
    public static  T file2pojo(File file,Class clazz) {
        try {
           return objectMapper.readValue(file, clazz);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }
    
    
}

实体类

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依赖把源码下下来,看看源码,注释,帮助理解

你可能感兴趣的:(json转化之jackson)