• 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;
        }
  • 相关阅读:
    appium+python自动化测试之webview的处理。
    Mysql为什么要使用视图
    show status 查看各种状态
    MySQL show processlist
    Java爬虫系列(五)
    div p、div>p、div+p、div~p、div.a 、p,span的用法和区别
    Spring Boot 定时任务 -- @Scheduled
    设计模式
    12月15日总结
    成员变量和静态变量的区别
  • 原文地址:https://www.cnblogs.com/hjwq/p/8919583.html
Copyright © 2020-2023  润新知