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);

你可能感兴趣的:(java)