json学习系列(8)JSON与JAVA数据的相互转换实例

一.完整案例

先定义一个java实体对象,如下:

package com.pcitc.json.cnblog;

/**
 * SimInfo实体对象
 * 
 * @Description
 * @author admin
 * @created 2015年6月30日 上午10:23:21
 * @version
 * @history
 * @see
 */
public class SimInfo {

    private String addTime;
    private String iccid;
    private int id;
    private String imei;
    private String imsi;
    private String phoneType;
    private String remark;
    private String tel;

    public String getAddTime() {
        return addTime;
    }

    public void setAddTime(String addTime) {
        this.addTime = addTime;
    }

    public String getIccid() {
        return iccid;
    }

    public void setIccid(String iccid) {
        this.iccid = iccid;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getImei() {
        return imei;
    }

    public void setImei(String imei) {
        this.imei = imei;
    }

    public String getImsi() {
        return imsi;
    }

    public void setImsi(String imsi) {
        this.imsi = imsi;
    }

    public String getPhoneType() {
        return phoneType;
    }

    public void setPhoneType(String phoneType) {
        this.phoneType = phoneType;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

}

1. json对象转换为java对象

@Test
    public void jsonToJava() {
        String json = "[{"addTime":"2011-09-19 14:23:02","iccid":"1111","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"}]";
        // 接收{}对象,此处接收数组对象会有异常
        if (json.indexOf("[") != -1) {
            json = json.replace("[", "");
        }
        if (json.indexOf("]") != -1) {
            json = json.replace("]", "");
        }
        // 把字符串形式的JSON串转换成JSON对象
        JSONObject obj = JSONObject.fromObject(json);
        // 把JSON对象转成java对象
        SimInfo simInfo = (SimInfo) JSONObject.toBean(obj, SimInfo.class);
        // 输出java对象的相关属性
        System.out.println(simInfo.getAddTime());
        System.out.println(simInfo.getIccid());
        System.out.println(simInfo.getImei());
        System.out.println(simInfo.getImsi());
        System.out.println(simInfo.getPhoneType());
        System.out.println(simInfo.getRemark());
        System.out.println(simInfo.getTel());
        System.out.println(simInfo.getId());
    }

输出结果:

2.  将json数组转换为java集合对象

/**
     * 将json数组转换为java集合对象
     * 
     * @Description
     * @author admin
     * @created 2015年6月30日 上午10:10:15
     */
    @Test
    public void jsonToJavaCollections() {
        String jsons = "[{"addTime":"2011-09-19 14:23:02","iccid":"1111","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"},"
                + "{"addTime":"2011-11-11 14:23:02","iccid":"2222","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"}]";
        // 把字符串形式的JSON串转换成JSON数组对象
        JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(jsons);
        if (jsonArray != null) {
            // 把JSON数组对象转换成java集合对象
            List<Object> list = (List<Object>) JSONSerializer.toJava(jsonArray);
            for (Object o : list) {
                // 把java对象转换成JSON对象
                JSONObject jsonObject = JSONObject.fromObject(o);
                // 把JSON对象转换成特定的java对象
                SimInfo simInfo = (SimInfo) JSONObject.toBean(jsonObject,
                        new SimInfo().getClass());
                // 输出java对象属性
                System.out.println("addTime: " + simInfo.getAddTime());
            }
        }
    }

输出结果:

3. java对象转换成为JSON对象

/**
     * java对象转换成为JSON对象
     * 
     * @Description
     * @author admin
     * @created 2015年6月30日 上午10:31:08
     */
    @Test
    public void javaToJson() {
        SimInfo simInfo = new SimInfo();
        simInfo.setAddTime("2015-06-30");
        simInfo.setIccid("1111");
        simInfo.setImei("2222");
        simInfo.setImsi("3333");
        simInfo.setPhoneType("4");
        simInfo.setRemark("aaaa");
        simInfo.setTel("5555");
        // java对象转换为json数组对象
        JSONArray jsonArray = new JSONArray().fromObject(simInfo);
        // json:
        // [{"addTime":"2011-09-19 14:23:02","iccid":"1111","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"}]
        System.out.println("json: " + jsonArray.toString());
    }

输出结果:

二. 基于json-lib.jar包Json实例程序的一些总结

1. 把一个JSON字符串转换成JSON对象的两种方式:

String json = "[{"addTime":"2011-09-19 14:23:02","iccid":"1111","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"}]";
if (json.indexOf("[") != -1) {
            json = json.replace("[", "");
        }
        if (json.indexOf("]") != -1) {
            json = json.replace("]", "");
        }

方式一:

JSONObject obj = JSONObject.fromObject(json);

方式二:

JSONObject obj = (JSONObject) JSONSerializer.toJSON(json);

2. JSONObject to DynaBean

String json = "{name="json",bool:true,int:1,double:2.2}";
JSONObject jsonObject = JSONObject.fromObject(json);
//抽象的写法:DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject );   
Object bean = JSONObject.toBean(jsonObject);
//Object bean1 = JSONSerializer.toJava(jsonObject);

3. JSONObject to JavaBean

String json = "{name:"zhangsan",age:25,hight:1.72,sex:true}";
JSONObject jsonObject = JSONObject.fromObject(json);
UserBean bean = (UserBean) JSONObject.toBean(jsonObject, UserBean.class);

4. JSONArray to List

String json = "["first","second"]";
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
List output = (List) JSONSerializer.toJava(jsonArray);

5. JSONArray to array

String json = "["first","second"]";
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
Object[] output = (Object[]) JSONSerializer.toJava(jsonArray, jsonConfig);
原文地址:https://www.cnblogs.com/longshiyVip/p/4609778.html