json与实体类、实体类List互转要用到的jar包:

http://download.csdn.net/download/superit401/9955861

http://files.cnblogs.com/files/wenjie123/json_jar%E5%8C%85.rar

1.测试类:

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import test.SwitchUtils.entity.User;

public class entity2json {

	public static void main(String[] args) {
		/*
		 * 1.测试单个实体转为json字符串
		 */
		User u = new User("alex","wuhan",18,"male");
		entity2json e2j = new entity2json();
		String jstr = e2j.beanToJSONStr(u);
		System.out.println("实体类转json字符串:"+jstr);
		/*
		 * 2.测试实体类List转为json字符串
		 */
		List<User> ul = new ArrayList<User>();
		ul.add(new User("tom","shanghai",23,"male"));
		ul.add(new User("cherry","beijing",20,"famale"));
		ul.add(new User("bole","suzhou",19,"famale"));
		String jstrl = e2j.beanListToJSONStr(ul);
		System.out.println("实体类List转为json字符串:"+jstrl);
		/*
		 * 3.测试json字符串转为实体类
		 */
		String j="{\"sex\":\"male\",\"address\":\"shanghai\",\"age\":23,\"name\":\"tom\"}"; 
		JSONObject obj1 = JSONObject.fromObject(j);
		User uu = (User) JSONObject.toBean(obj1,User.class);
		System.out.println("json字符串转为实体类:"+uu);
		/*
		 * 4.测试json字符串转为实体类List
		 */
		String json = "{\"listObject\":[{\"sex\":\"male\",\"address\":\"shanghai\",\"age\":23,\"name\":\"tom\"},{\"sex\":\"famale\",\"address\":\"beijing\",\"age\":20,\"name\":\"cherry\"},{\"sex\":\"famale\",\"address\":\"suzhou\",\"age\":19,\"name\":\"bole\"}]}";
		JSONObject obj = JSONObject.fromObject(json);
		List<User> ulist = (List<User>) JSONArray.toList(obj.getJSONArray("listObject"), User.class);
		System.out.println("json字符串转为实体类List:"+ulist);
	}
	
	/**
     * 将对象转换成JSON格式的字符串 适用于单个对象(单个对象里可以包含List<T>)的转换
     */
    public <T> String beanToJSONStr(T t) {
        String json = "";
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class,
                new JsonDateValueProcessor());
        if(t!=null){
        json = JSONObject.fromObject(t, jsonConfig).toString();
        }else{
            json="[]";
        }
        return json;
    }
    /**
     * 将实体类List转换成JSON格式的字符串
     */
    public <T> String beanListToJSONStr(List<T> t) {
        String json = "";
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class,
                new JsonDateValueProcessor());
        if(t!=null){
        json = JSONArray.fromObject(t, jsonConfig).toString();
        }else{
            json="[]";
        }
        return json;
    }
}


2.User.java

public class User{
	private String name;
	private String address;
	private int age;
	private String sex;
	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 int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		return "User [name=" + name + ", address=" + address + ", age=" + age + ", sex=" + sex + "]";
	}
	public User(String name, String address, int age, String sex) {
		super();
		this.name = name;
		this.address = address;
		this.age = age;
		this.sex = sex;
	}
	public User(){
		
	}
}	

3.工具类:JsonDateValueProcessor.java(注意:此类可要可不要,没有涉及到时间转换问题就可以删除,包括删除上面测试类中相关两处代码)

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
 * Timestamp 处理器
 */
public class JsonDateValueProcessor implements JsonValueProcessor {

    private String formatDateTime ="yyyy-MM-dd HH:mm:ss";
    private String formatDate ="yyyy-MM-dd";
    public Object processArrayValue(Object value, JsonConfig config) {
        return process(value);
    }

    public Object processObjectValue(String key, Object value, JsonConfig config) {
        return process(value);
    }
    
    private Object process(Object value){
        
        if(value instanceof Date){
            SimpleDateFormat sdf ;
            if(value.toString().length()<=11||value.toString().indexOf("00:00:00.0")>=0){
                sdf= new SimpleDateFormat(formatDate,Locale.UK);
            }else{
                sdf= new SimpleDateFormat(formatDateTime,Locale.UK);
            }
            return sdf.format(value);
        }
        return value == null ? "" : value.toString();
    }
}


更多请参考:

http://www.cnblogs.com/wenjie123/archive/2015/07/13/4643305.html



本文转载:CSDN博客