从JSON中提取指定数组并保存到JSONArray失败求助
解决JSON提取
neededData数组时的类型错误问题 你遇到的问题根源很清晰——你搞错了neededData字段的JSON类型!先看返回的完整JSON结构:
{"error":false,"message":"Success","neededData":[{"column1":1,"column2":2,"column3":3},{"column1":4,"column2":5,"column3":6}]}
这里的neededData本身就是一个JSON数组(用[]包裹),但你却尝试用getJSONObject("neededData")把它当成JSON对象来获取,这必然会触发类型转换异常。
正确的代码实现
直接调用getJSONArray方法就能拿到目标数组,不需要多余的转换步骤:
// 假设obj是已经解析完成的整个JSON对象 JSONArray array = obj.getJSONArray("neededData");
为什么你的原代码会失败?
你的错误代码:
JSONObject userJson = obj.getJSONObject("neededData"); JSONArray array = new JSONArray(userJson);
第一行就触发了问题——neededData不是JSONObject类型,调用getJSONObject会抛出JSONException,提示无法将数组转换为对象,后续的构造操作自然也无法正常执行。
额外的健壮性优化
如果不确定字段的类型,可以先获取字段值再做类型判断,避免硬编码导致的异常:
Object data = obj.get("neededData"); if (data instanceof JSONArray) { JSONArray array = (JSONArray) data; // 处理数组逻辑 } else if (data instanceof JSONObject) { JSONObject objData = (JSONObject) data; // 处理对象逻辑 }
内容的提问来源于stack exchange,提问作者Ratak Sana
相关产品推荐
相关产品推荐

