实际中遇到的JSON与JAVA的转换问题

类似代码如下:

    /**
     * json对象转换为java对象
     * 
     * @throws JSONException
     */
    @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("]", "");
        }
        JSONObject obj=new JSONObject().fromObject(json);
        SimInfo simInfo=(SimInfo)JSONObject.toBean(obj, SimInfo.class);
        System.out.println("obj: "+simInfo);
        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());
        
        DaoFactory.getSimInfoDao().add(simInfo);
    }

    /**
     * 将json转换为java集合对象
     */
    @Test
    public void jsonToJavas(){
        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\"}]";
        List<SimInfo> simInfos = getJavaCollection(new SimInfo(),jsons);
        System.out.println(simInfos.size());
        for(SimInfo simInfo:simInfos){
            System.out.println("addTime: "+simInfo.getAddTime());
                }
        
    }

    /**
     * 封装将json对象转换为java集合对象
     * 
     * @param <T>
     * @param clazz
     * @param jsons 
     * @return
     */
    private <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;
    }
    
    /**
     * java对象转换为json对象
     * 
     * @throws JSONException
     */
    @Test
    public void javaToJson(){
        SimInfo simInfo=new SimInfo();
        simInfo.setAddTime(UtilTool.dateToStr(new Date(), null));
        simInfo.setIccid("1111");
        simInfo.setImei("2222");
        simInfo.setImsi("3333");
        simInfo.setPhoneType(4);
        simInfo.setRemark("aaaa");
        simInfo.setTel("5555");
        //java对象转换为json对象
        String json=new JSONArray().fromObject(simInfo).toString();
       System.out.println("json: "+json);
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值