Jmeter书中不会教你的(50)——获取复杂json串中的数组getJSONArray()方法

        有一个响应体如下,上一节讲了如何将字符串类型的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对象,直到得到想要的值,那这样如果层级很深,是不是转换次数很多,很麻烦,有没有更简便的方法?下一节讲。。。。。。
 

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

agrapea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值