json数据转换异常之 java.lang.reflect.InvocationTargetException

最近在做一个微信小程序,由于前后端完全分离,当页面需要列表展示内容时(例如:购物车商品展示)需要从后台(java的servlet)完全把数据以集合的形式 传递到前端的js。

因此后台使用到了【List对象集合–> JSONArray数组–> String字符串】的方法。
但是遇到了很多困难,今记录,供缘人参考。
先上代码:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  //创建ArrayList数组
  List<Task> tasks= new ArrayList<Task>(); 
  try { 
   ResultSet res =  DoSQL.executeQuery("SELECT * FROM task");
   while (res.next()) {
    Task A = new Task(res.getInt("id"));
    System.out.println(A.toString());
    tasks.add(A);
   }
  } catch (SQLException e) {
   // TODO 自动生成的 catch 块
   System.out.println("获取res查询结果集失败");
   e.printStackTrace();
  }
  response.setContentType("text/html;charset=GBK");//防止浏览器无法显示中文
  //创建JSON集合
        JSONArray jsonarray = JSONArray.fromObject(tasks);
        //把JSON集合转出String字符串输出
        String str = jsonarray.toString();
        Writer out = response.getWriter(); 
        out.write(str);
        out.flush(); 
 }

java.lang.reflect.InvocationTargetException Description The server encountered an unexpected condition that prevented it from fulfilling the request)
两个问题:
**1.**可能导包不全,使用JSONArray.fromOb**j**ect(tasks)方法把List集合转化成JSON格式需要六个关键包【 * * 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:】

  • *commons-beanutils.jar,
  • *commons-httpclient.jar,
  • *commons-lang.jar,
  • *ezmorph.jar,
  • *commons-collections.jar
  • *commons-logging.jar
    下载地址:JSONObject所需的六个包
    **2.**可能是List对象集合在转化成JSON数据时,类型不支持 ,json转换的时候类型匹配不上的问题了。因为对象内都有除了基本类型的数据,比如Date类型的,那么在对象转json时,JSONObject就无法及时的将Date类型转为Json所支持的类型了。其实网上还有说是数据库里的Date包和后台的date包类型不一致没有延时的问题。

servlet运行成功,将存于List里面所有对象的参数转化成了JSON格式,传到前端:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值