实体类、实体类List↔JSON互转

来源:互联网 发布:吉林省互联网 公安软件 编辑:程序博客网 时间:2024/06/05 05:23

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;}@Overridepublic 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