首页 > 解决方案 > 在 Scala/Gatling 中提取 json 响应的第 n 个元素

问题描述

我在 json 中有一个响应正文,我想在其中提取值:ID_ADFA0741-6A46-4A90-8AAE-BC7DB18B27E1

在下面的 json 结构中。

.check(jsonPath("$..key").saveAs("key")))

给我价值 M01A

我如何使用检查来获取元素编号 2 的值“key”(下面的“key”的第二次出现?

{"libItems":[{"hasNotes":false,"drugs":[{"ingredientNamesAndStrengths":[{"ingredientNames":["Diklofenak"],"strengths":["50 mg"]}],"order":0,"form":"Enterotab"}],"treatmentType":"Brand","isSupplement":false,"nameOfBrand":"Voltaren","nameFormStrength":"Diklofenak Enterotab 50 mg","medicationUsedFor":{"value":"TEST"},"clinicalWarnings":[],"dataWarnings":[{"practitionerName":"ELENA FOS ENGELUND","importDate":"2021-08-16T18:13:06.597+02:00","isNewTreatment":true,"type":"Import","isMarkedAsHandled":false}],"warningReferences":[{"key":"M01A","drugName":"Diklofenak Enterotab 50 mg","refType":"Atc"},{"key":"ID_ADFA0741-6A46-4A90-8AAE-BC7DB18B27E1","drugName":"Diklofenak Enterotab 50 mg","refType":"Atc"},{"key":"ID_BD1BDC3F-1FCF-4944-99BC-6B3E8EAAD6FD","drugName":"Diklofenak Enterotab 50 mg","refType":"Atc"}],"usage":"Fixed","atc":"M01AB05","atcNames":"Diklofenak","shortDose":{"key":"160","value":"1x3"},"drugId":"ID_BD1BDC3F-1FCF-4944-99BC-6B3E8EAAD6FD","hasIngredientNames":true,"prescriptionActions":["Stop","ConfirmUse","Renew","Prescribe"],"id":"440a01f5-1df8-4f26-a6c1-08d95cab00c7","treatmentId":"00be4297-cc9f-432d-30d6-08d95cab00c7","treatmentStart":"2021-06-02T00:00:00","dssnText":"1 tablett 3 ganger daglig","actionStatus":"ActionRequired","treatmentStatus":"Active","externalUpdate":"New","approvalStatus":"Empty","resepts":[{"localReseptState":"None","rfReseptState":"AvailableForDispatch"}],"diffPreviousValues":[],"hasRfError":false,"isLocked":false,"guardianAccessReservation":false,"paperReseptDispensation":false,"reseptPidState":"NoChange"}],"fibItems":[],"nibItems":[],"vaccines":[],"vibInformation":{"vibStatus":"ActionRequired","messagesToSign":{"new":0,"renewed":0,"changed":0,"stopped":0,"removed":0,"recalled":0,"registration":0,"stoppedLocalRegistration":0},"actionRequired":{"treatments":1,"nutritions":0,"consumables":0,"vaccines":0,"allergies":0,"warnings":0},"previousLibItems":["ID_BD1BDC3F-1FCF-4944-99BC-6B3E8EAAD6FD"]}}

标签: scalagatlingjsonpath

解决方案


好的,有两种方法。

第一个 - 您可以“直接”定义需要提取的元素:

.check(jsonPath("$.[1].key").saveAs("key")))

第二种方式 - 您可以保存所有元素,然后通过 Gatling EL 使用所需的元素:

.check(jsonPath("$..key").findAll.saveAs("keys")))

"${keys(1)}"

推荐阅读