使用了阿里的 JSON 解析库,在 JSON.parseObject(body) 解析返回 JSON 字符串时报错:JSONException: can not cast to JSONObject

不确定问题所在,先是增加 jsonObj.containsKey("error_code") 来判断是否存在错误码,但这个解析错误是在这个判断之前,所以对当前问题没有帮助。

后找到一篇提到返回的 JSON 数组格式,需使用 JSONArray 来解析:

JSONArray jsona = (JSONArray)JSONArray.parse(body);
# 或
JSONArray jsonArray = JSON.parseArray(body);

但这个前提是返回的格式要明确、固定。这边之所以会爆这个解析错误,就是因为正常情况下没有返回错误码。可以想到的判断是通过 body.startsWith("[") 来判断是否是数组,然后再根据不同的数据格式来做解析。或者让接口的提供者统一返回格式也是一种很好的办法。