博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
json学习系列(8)JSON与JAVA数据的相互转换实例
阅读量:4350 次
发布时间:2019-06-07

本文共 6031 字,大约阅读时间需要 20 分钟。

一.完整案例

先定义一个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 list = (List) 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

你可能感兴趣的文章