• 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);
  • 相关阅读:
    Git常用命令总结
    自己动手做一个vue组件,并上传npm
    详解树状结构图 vue-org-tree
    npm依赖之tooljs、requestjs
    本地服务器热更新 插件 live-server
    VUE项目引入第三方依赖报错 Uncaught SyntaxError: Unexpected token <
    npm安装依赖报 npm ERR! code Z_BUF_ERROR npm ERR! errno -5 npm ERR! zlib: unexpected end of file 这个错误解决方案
    关于Vue-$router传参出现刷新页面或者返回页面丢失数据的问题
    Vue自行封装常用组件-倒计时
    Vue自行封装常用组件-文本提示
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/4609778.html
Copyright © 2020-2023  润新知