извлечь данные из http ответа в jmeter - PullRequest
0 голосов
/ 29 октября 2018

Это данные json, которые я получаю после выполнения http-запроса в jmeter.

{
    "entry": [
        {
            "search": {
                "mode": "match"
            },
            "resource": {
                "meta": {
                    "lastUpdated": "2018-10-29T08:37:53.351+00:00",
                    "versionId": "aa1e1cc3-8018-408e-a70a-4885004720fa",
                    "tag": [
                        {
                            "system": "http:\/\/hl7.org\/fhir\/v3\/ObservationValue",
                            "code": "SUBSETTED"
                        }
                    ]
                },
                "name": [
                    {
                        "given": [
                            "Aaron697"
                        ],
                        "use": "official",
                        "prefix": [
                            "Mr."
                        ],
                        "family": "Abernathy524"
                    }
                ],
                "id": "176b8fef-5a62-48da-b82e-4722843d9f2d",
                "resourceType": "Patient"
            },
            "fullUrl": "http:\/\/localhost:4080\/Patient\/176b8fef-5a62-48da-b82e-4722843d9f2d"
        },
        {
            "search": {
                "mode": "match"
            },
            "resource": {
                "meta": {
                    "lastUpdated": "2018-10-29T08:09:33.67+00:00",
                    "versionId": "c852310e-8894-45dd-a87c-9e449950caf4",
                    "tag": [
                        {
                            "system": "http:\/\/hl7.org\/fhir\/v3\/ObservationValue",
                            "code": "SUBSETTED"
                        }
                    ]
                },
                "name": [
                    {
                        "given": [
                            "Aaron697"
                        ],
                        "use": "official",
                        "prefix": [
                            "Mr."
                        ],
                        "family": "Abernathy524"
                    }
                ],
                "id": "8bbb3bb7-4e5b-48bd-82af-8463c4060de3",
                "resourceType": "Patient"
            },
            "fullUrl": "http:\/\/localhost:4080\/Patient\/8bbb3bb7-4e5b-48bd-82af-8463c4060de3"
        }
		]
}

Теперь мне нужно извлечь все идентификаторы и name.use, name.given, name.family, name.prefix в соответствующие CSV-файлы. Например: идентификатор в файл id.csv; name.give в файл name_given.csv и т.д ... http-запрос может содержать n идентификаторов и имен. Как это сделать? Я пытался и не удалось с помощью экстракта JSON и регулярного выражения.

1 Ответ

0 голосов
/ 29 октября 2018
  1. Добавить JSR223 PostProcessor как дочерний элемент запроса, который возвращается выше JSON
  2. Поместите следующий код в область скриптов:

    import com.jayway.jsonpath.JsonPath
    
    def idCSV = new File('id.csv')
    def nameGiven = new File('name_given.csv')
    def nameFamily = new File('name_family.csv')
    def namePrefix = new File('name_prefix.csv')
    def newLine = System.getProperty('line.separator')
    
    def response = prev.getResponseDataAsString()
    
    def ids = JsonPath.read(response, '$..id')
    
    ids.each { id ->
        idCSV << id << newLine
    }
    
    def names = JsonPath.read(response, '$..name')
    names.each { name ->
        name.each { subName ->
            subName.get('given').each { givenName ->
                nameGiven << givenName << newLine
            }
            subName.get('prefix').each { prefix ->
                namePrefix << prefix << newLine
            }
    
            nameFamily << subName.get('family') << newLine
        }
    
    }
    
  3. Вот и все, код извлечет необходимые данные из ответа и сохранит их в следующих файлах

    • id.csv
    • name_given.csv
    • name_family.csv
    • name_prefix.csv

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...