jackson的基本使用

在HomeSystem项目中用到json,所以采用jackson框架来自动转换,以下是记录一下基本的操作


1、在pom.xml中添加依赖

<!-- jackson -->		
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-core</artifactId>
	</dependency>
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-databind</artifactId>
	</dependency>
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-annotations</artifactId>
	</dependency>

2、写工具类JsonUtil、采用单例模式

import java.io.IOException;
import java.io.StringWriter;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * json工具类
 * @author CSH
 * 2015-5-25
 */
public class JsonUtil {
    private static JsonUtil ju;
    private static JsonFactory jf;
    private static ObjectMapper mapper;
    private JsonUtil(){}
    
    public static JsonUtil getInstance() {
        if(ju==null) ju = new JsonUtil();
        return ju;
    }
    
    public static ObjectMapper getMapper() {
        if(mapper==null) {
            mapper = new ObjectMapper();
        }
        return mapper;
    }
    
    public static JsonFactory getFactory() {
        if(jf==null) jf = new JsonFactory();
        return jf;
    }
    
    public String obj2json(Object obj) {
        JsonGenerator jg = null;
        try {
            jf = getFactory();
            mapper = getMapper();
            StringWriter out = new StringWriter();
            jg = jf.createJsonGenerator(out);
            mapper.writeValue(jg, obj);
            return out.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(jg!=null) jg.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    
    public Object json2obj(String json,Class<?> clz) {
        try {
            mapper = getMapper();
            return mapper.readValue(json,clz);
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}



3、测试类TestJson

import org.junit.Test;

import com.csh.homesystem.model.Diary;
import com.csh.homesystem.model.Home;

/**
 * @author CSH
 * 2015-5-25
 */

class Person {
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
class User {
	private int age;
	private Person person;
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Person getPerson() {
		return person;
	}
	public void setPerson(Person person) {
		this.person = person;
	}
	@Override
	public String toString() {
		return "User [age=" + age + ", person=" + person.getId() + ", " + person.getName() + "]";
	}
}

public class TestJson {

	@Test
	public void test01(){
		Person p = new Person();
		p.setId(1);
		p.setName("111");
		User u = new User();
		u.setAge(20);
		u.setPerson(p);
		
		String str = JsonUtil.getInstance().obj2json(u);
		
		System.out.println(str);
		
		User user = (User) JsonUtil.getInstance().json2obj(str, User.class);
		System.out.println(user.toString());
		
	}
}

以上是简单的jackson运用

你可能感兴趣的:(java,json,Jackson,obj2json,json2obj)