1. JSONArray对象里面的子对象可能并不是JSONObject类型

1.1 问题描述

feign方法接受的JSONObject对象里获取的JSONArray对象,对象循环的时候出现类型转换失败的错误。
发现版本:fastjson1.2.73+

1.2 代码如下

    private long getRepeatQty(JSONArray array, String tableName, String pkName) {
        String ids = "";
        for (Object obj : array) {
            JSONObject rowObj = (JSONObject)obj; //就是这里报错
            String pkId = rowObj.getString( pkName);
            ids += ",'" + pkId + "'";
        }
   }

调试发现里面的居然是HashMap对象

1.3 解决办法

循环体内多一次转换:

    private long getRepeatQty(JSONArray array, String tableName, String pkName) {
        String ids = "";
        for (Object obj : array) {
            JSONObject rowObj = (JSONObject)JSONObject.toJSON(obj); //多一次转换
            String pkId = rowObj.getString( pkName);
            ids += ",'" + pkId + "'";
        }
   }

参考文章:https://javastack.blog.csdn.net/article/details/107218327

文档更新时间: 2021-07-22 10:10   作者:张敏