有一个响应体如下,上一节讲了如何将字符串类型的json响应体通过JSONobject类转换为json对象,再通过get方法去获取想要的内容。在以下的响应体中data层级下的list是一个数组,
思考问题一,如何将这个list提取出来类型是数组?如果是数组就直接可以用下标方式引用了。
思考问题二,数组中的每一个元素又是json格式的,如何获取其中的值?
{
"msgCode": "0",
"msg": "成功",
"data": {
"total": 321,
"list": [{
"taskId": "fc4c2b3e7e2c400d81f0eae63f15a4ab",
"recordId": "f4daf944-2bdf-4bc8-8962-40dbd1afd786",
"distributeTime": "2019-01-30 11:37:08",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910095609049_1_316_ipcc_shtp_asr-8kHz-aff95840b49c11e8[1].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910095609049_1_316_ipcc_shtp_asr-8kHz-aff95840b49c11e8[1].wav",
"recordDuration": "00:00:22",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}, {
"taskId": "6adcf44f2fdf4e3fb2ce93a8eaec87de",
"recordId": "b4d12c20-8b19-4095-a78a-509d0733c88b",
"distributeTime": "2019-01-30 11:37:09",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910095704682_1_317_ipcc_shtp_asr-8kHz-d1202b66b49c11e8[1].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910095704682_1_317_ipcc_shtp_asr-8kHz-d1202b66b49c11e8[1].wav",
"recordDuration": "00:00:20",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}, {
"taskId": "da3213defd7c4a9e9a49880bfe09b601",
"recordId": "29529ea1-3868-463c-9b88-9f077927be3e",
"distributeTime": "2019-01-30 11:37:10",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910095704682_1_317_ipcc_shtp_asr-8kHz-d1202b66b49c11e8[2].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910095704682_1_317_ipcc_shtp_asr-8kHz-d1202b66b49c11e8[2].wav",
"recordDuration": "00:00:16",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}, {
"taskId": "b9f2bcf2970b40cea82007ba450eaa7c",
"recordId": "e1b355f9-fc1a-4920-a20f-684cd2145d7c",
"distributeTime": "2019-01-30 11:37:11",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910095837911_1_318_ipcc_shtp_asr-8kHz-08b06f50b49d11e8[1].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910095837911_1_318_ipcc_shtp_asr-8kHz-08b06f50b49d11e8[1].wav",
"recordDuration": "00:00:16",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}, {
"taskId": "f342876995a9480490067818238aaf13",
"recordId": "c53a7808-4281-4731-91f8-39f1d23ca0fe",
"distributeTime": "2019-01-30 11:37:11",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910095837911_1_318_ipcc_shtp_asr-8kHz-08b06f50b49d11e8[2].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910095837911_1_318_ipcc_shtp_asr-8kHz-08b06f50b49d11e8[2].wav",
"recordDuration": "00:00:06",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}, {
"taskId": "e85abd8bf8fc4a84beb39f8e324dce28",
"recordId": "dc620476-ef9b-4119-afb0-26d43b5849cf",
"distributeTime": "2019-01-30 11:37:12",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910095839670_1_319_ipcc_shtp_asr-8kHz-09c0011cb49d11e8[1].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910095839670_1_319_ipcc_shtp_asr-8kHz-09c0011cb49d11e8[1].wav",
"recordDuration": "00:00:21",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}, {
"taskId": "de9a2a7a34da45b1b8383ca7e2ad2c42",
"recordId": "e2032d7a-8826-46e5-9e60-303d9e9e1856",
"distributeTime": "2019-01-30 11:37:13",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910095915418_1_320_ipcc_shtp_asr-8kHz-1f0d7e50b49d11e8[1].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910095915418_1_320_ipcc_shtp_asr-8kHz-1f0d7e50b49d11e8[1].wav",
"recordDuration": "00:00:15",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}, {
"taskId": "459e73e5812d46589686c9bde6287eac",
"recordId": "a6573fac-4bd9-4365-a776-a216c8f94629",
"distributeTime": "2019-01-30 11:37:14",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910095918387_1_321_ipcc_shtp_asr-8kHz-20d5be32b49d11e8[1].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910095918387_1_321_ipcc_shtp_asr-8kHz-20d5be32b49d11e8[1].wav",
"recordDuration": "00:00:14",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}, {
"taskId": "4dd84231684640c8bf0bea4a7392735d",
"recordId": "1bf3c3ca-2f1d-424a-8ca3-f9b789518d90",
"distributeTime": "2019-01-30 11:37:15",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910095918387_1_321_ipcc_shtp_asr-8kHz-20d5be32b49d11e8[2].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910095918387_1_321_ipcc_shtp_asr-8kHz-20d5be32b49d11e8[2].wav",
"recordDuration": "00:00:09",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}, {
"taskId": "f705b3b1a35b4bf1b7d368f6722d4a22",
"recordId": "00c2d521-825c-4484-8dea-84c3ebe8bfd8",
"distributeTime": "2019-01-30 11:37:16",
"taskName": "20190130task1",
"bizName": "智能面试",
"wavFilename": "20180910100007298_1_322_ipcc_shtp_asr-8kHz-3df9e268b49d11e8[1].wav",
"recordSource": "/nfsc/csp_nas_8821_id008821_vol1002_stg/eim-sm/RECORD/zhinengmianshi/20190130/20180910100007298_1_322_ipcc_shtp_asr-8kHz-3df9e268b49d11e8[1].wav",
"recordDuration": "00:00:11",
"statusName": null,
"markStartTime": null,
"markEndTime": null,
"markReceiveTime": null,
"marker": null,
"userFlag": null,
"back": false
}],
"pageNum": 1,
"pageSize": 10,
"size": 10,
"startRow": 1,
"endRow": 10,
"pages": 33,
"prePage": 0,
"nextPage": 2,
"isFirstPage": true,
"isLastPage": false,
"hasPreviousPage": false,
"hasNextPage": true,
"navigatePages": 8,
"navigatepageNums": [1, 2, 3, 4, 5, 6, 7, 8],
"navigateFirstPage": 1,
"navigateLastPage": 8,
"firstPage": 1,
"lastPage": 8
}
}
1)将响应体转换为json对象
JSONObject rsob=new JSONObject(prev.getResponseDataAsString());
2)利用getString()获取data下的json字符串
data=rsob.getString("data");
log.info(data);
3)将字符串data转换为json对象
JSONObject data_obj=new JSONObject(data);
4)利用getJSONArray获取list数组,计算list长度
JSONArray list=data_obj.getJSONArray("list");
listlen=list.length();
log.info(listlen.toString());
5)再次将获取的数组元素转成字符串后再转成json对象
JSONObject list_obj=new JSONObject(list.get(0).toString());
log.info(list_obj.getString("taskId"));
通过以上可以看到就是将不断的将json格式的字符串转换为json对象,通过json对象方法获取想要的内容,如果该内容又是一个json字符串,再将内容转为json对象,直到得到想要的值,那这样如果层级很深,是不是转换次数很多,很麻烦,有没有更简便的方法?下一节讲。。。。。。