json學習系列(8)JSON與JAVA資料的相互轉換執行個體

來源:互聯網
上載者:User

標籤:

一.完整案例

先定義一個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);

json學習系列(8)JSON與JAVA資料的相互轉換執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.