解析API JSON响应获取CaseResult内RequestID报错求解决方案
问题解决:org.json无法解析嵌套路径获取RequestID
你遇到的问题是org.json库的JSONObject.get()方法不支持直接传入嵌套路径字符串,它只能识别当前层级的键名,所以Data[0].CaseData.CaseResult.RequestID会被当作一个完整的键名去查找,自然找不到。
正确的做法是逐层解析JSON结构,步骤如下:
- 先获取
Data对应的JSON数组 - 取出数组的第一个元素(索引0)
- 从该元素中获取
CaseData对象 - 再从
CaseData中获取CaseResult对象 - 最后从
CaseResult中提取RequestID
修正后的代码
JSONObject actualJson = new JSONObject(response.getResponseText()) // 逐层解析嵌套结构 JSONArray dataArray = actualJson.getJSONArray("Data") JSONObject firstDataItem = dataArray.getJSONObject(0) JSONObject caseData = firstDataItem.getJSONObject("CaseData") JSONObject caseResult = caseData.getJSONObject("CaseResult") def requestID = caseResult.getString("RequestID")
或者用Groovy的链式调用简化写法:
JSONObject actualJson = new JSONObject(response.getResponseText()) def requestID = actualJson.getJSONArray("Data") .getJSONObject(0) .getJSONObject("CaseData") .getJSONObject("CaseResult") .getString("RequestID")
补充说明
如果需要更简洁的路径式解析,可以考虑更换支持路径语法的JSON库(比如Jackson、Gson),但如果必须使用org.json,就只能采用逐层解析的方式。
内容的提问来源于stack exchange,提问作者Prabu
相关产品推荐
相关产品推荐

