• Java-net.sf.json.JSONException: java.lang.reflect.InvocationTargetException处理方法之一


    问题描述:

    在项目中写了一个方法从数据库查询信息,返回List<Map<String,Object>>,如下面语句:

    //1.根据条件获取未完成的基本信息 
    List<Map<String,Object>> list = getUncompliateInfo(Condition condition);
    //2.将list转为JSONArray
    JSONArray array = JSONArray.fromObject(list);
    obj.element("data",array);

    其实一般这么写,不会出现问题,而且大部分开发者都是这么用的,但是今天我的程序报异常:

    net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

     问题分析:

    经过我查阅资料,调试代码,发现我获取的list中的map的value值有null,也有new java.sql.date类型的时间值,这就是问题的原因。

    问题原因:

    获取的值有java中不识别的数据类型。如:java.sql.date,并不是java中的时间类型java.utils.date。

    解决办法:

    解决问题的办法是将java.sql.date转为java.utils.date,如:java.utils.date(date);并将null值写成空的字符串[ "" ];

    我的解决办法是循环了获取到的list,将list中map的值遍历重新处理了一一遍,把不规范的数据规范化,所以在返回获取到的list之前,调用这个方法,处理一遍。

    下面是我的处理代码,本代码仅供参考:

    private List<Map<String,String>> getNewList(List<Map> list){
            List<Map<String,String>> result = new ArrayList<Map<String,String>>();
            if(!list.isEmpty()&&list.size()>0){
                Date date = new Date();
                for(Map map:list){
                    Map<String,String> tempMap = new HashMap<String,String>();
                     for (Iterator i = map.keySet().iterator(); i.hasNext();) {  
                           String key = (String) i.next(); 
                           if(map.get(key)==null){
                               tempMap.put(key, "");  
                           }else{
                               tempMap.put(key, map.get(key).toString().equals("")?"":map.get(key).toString());
                           }
                          }
                     result.add(tempMap);
                }
            }
            return result;
        }
  • 相关阅读:
    【oracle】约束之非空约束
    【oracle】操作表数据之修改和删除
    【oracle】操作表中的数据之添加
    HashMap和HashTable的比较
    java集合类-总纲
    性能测试工具篇(开源&商业)
    比较好的idea工具介绍
    根据mysql某一条记录生成对应实体类的初始化
    Spring+mybatis多数据源切换笔记
    Jmeter的Throughput和平均响应时间计算方法整理
  • 原文地址:https://www.cnblogs.com/hjwq/p/8919583.html
Copyright © 2020-2023  润新知