java對象與json的互轉

來源:互聯網
上載者:User
 參考 http://www.cnblogs.com/linjiqin/archive/2011/09/19/2181408.html

在移動互連網開發的過程中,資料業務的傳輸一般由xml json這兩種為主,json感覺在對象的使用上更加的便捷,我們就來一探究竟。

public class SimInfo {private String imei;private String imsi;private String telephone;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 getTelephone() {return telephone;}public void setTelephone(String telephone) {this.telephone = telephone;}}

  需要以下 jar包

1、java對象轉換為json對象,並反轉解析還原

        SimInfo simInfo = new SimInfo();
        simInfo.setTelephone("1111");
        simInfo.setImei("2222");
        simInfo.setImsi("3333");
        
        String json = new JSONArray().fromObject(simInfo).toString();
        System.out.println("json: " + json);

        json = json.substring(1, json.length() - 1);
        JSONObject obj = new JSONObject().fromObject(json);//從json對象再轉為java對象
        SimInfo simInfo_t = (SimInfo) JSONObject.toBean(obj, SimInfo.class);
        System.out.println("obj: " + simInfo_t);
        System.out.println(simInfo_t.getImei());
        System.out.println(simInfo_t.getImsi());
        System.out.println(simInfo_t.getTelephone());

---------------執行結果如下:

json: [{"imei":"2222","imsi":"3333","telephone":"1111"}]
obj: SimInfo@1ac04e8
2222
3333
1111

2、java list 對象轉換為json對象,並反轉解析還原

        SimInfo simInfo = new SimInfo();
        simInfo.setTelephone("1111");
        simInfo.setImei("2222");
        simInfo.setImsi("3333");
        // java對象轉換為json對象
        
        SimInfo simInfo2 = new SimInfo();
        simInfo2.setTelephone("1111x");
        simInfo2.setImei("2222x");
        simInfo2.setImsi("3333x");
        
        List<SimInfo> list = new ArrayList<SimInfo>();
        list.add(simInfo);
        list.add(simInfo2);
        
        String json = new JSONArray().fromObject(list).toString();
        System.out.println("json: " + json);

        List<SimInfo> simInfos = getJavaCollection(new SimInfo(), json);
        System.out.println(simInfos.size());
        for (SimInfo simInfo1 : simInfos) {
            System.out.println("Imei: " + simInfo1.getImei());
            System.out.println("=========");
        }

private static <T> List<T> getJavaCollection(T clazz, String jsons) {
        List<T> objs = null;
        JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(jsons);
        if (jsonArray != null) {
            objs = new ArrayList<T>();
            List list = (List) JSONSerializer.toJava(jsonArray);
            for (Object o : list) {
                JSONObject jsonObject = JSONObject.fromObject(o);
                T obj = (T) JSONObject.toBean(jsonObject, clazz.getClass());
                objs.add(obj);
            }
        }
        return objs;
    }

---------------執行結果如下:

json: [{"imei":"2222","imsi":"3333","telephone":"1111"},{"imei":"2222x","imsi":"3333x","telephone":"1111x"}]
2
Imei: 2222
=========
Imei: 2222x
=========

3、補充執行個體,如果在class對象中包含存在list對象,是否還可以正常轉換,答案是肯定得,見以下執行個體

public class SimInfo {

    private String imei;
    private String imsi;
    private String telephone;
    private List<Replay> re;
    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 getTelephone() {
        return telephone;
    }
    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }
    public List<Replay> getRe() {
        return re;
    }
    public void setRe(List<Replay> re) {
        this.re = re;
    }
    
}

SimInfo simInfo = new SimInfo();
        simInfo.setTelephone("1111");
        simInfo.setImei("2222");
        simInfo.setImsi("3333");
        List<Replay> re =  new ArrayList<Replay>();
        re.add(new Replay("title1","name1"));
        re.add(new Replay("title2","name2"));
        simInfo.setRe(re);
        // java對象轉換為json對象
        
        String json = new JSONArray().fromObject(simInfo).toString();
        System.out.println("json: " + json);

        json = json.substring(1, json.length() - 1);
        JSONObject obj = new JSONObject().fromObject(json);
        SimInfo simInfo_t = (SimInfo) JSONObject.toBean(obj, SimInfo.class);
        System.out.println("obj: " + simInfo_t);
        System.out.println(simInfo_t.getImei());
        System.out.println(simInfo_t.getImsi());
        System.out.println(simInfo_t.getTelephone());
        System.out.println(simInfo_t.getRe().size());

---------------執行結果如下:

json: [{"imei":"2222","imsi":"3333","re":[{"name":"name1","title":"title1"},{"name":"name2","title":"title2"}],"telephone":"1111"}]
obj: SimInfo@df6ccd
2222
3333
1111
2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.