Ваш код соответствует предоставленным вами данным JSON и должен работать нормально. Однако, если посмотреть на ошибку, которую вы получаете для некоторых файлов, структура отличается.
Вы можете обойти это, явно проверив тип subname
, который вы получаете, используя оператор instanceof , например:
names.each { name ->
name.each { subName ->
if (subName instanceof Map) {
subName.get('given').each { givenName ->
if (givenName != null)
givenList << givenName
}
} else if (subName instanceof String) {
givenList << subName
} else {
log.error('Expected Map or String, got' + subName.getClass().getName())
}
temp = subName.get('family')
if (temp != null)
familyList << temp
}
}
Демо-версия:
Другие улучшения:
Похоже, вы вообще не используете JsonSlurper , поэтому вы можете просто упростить эту строку:
jsonString = new groovy.json.JsonSlurper().parseText(new File(pathToRead + "Data/fhir/" + index.getAt(random)).text);
к этому
jsonString = новый файл (pathToRead + "Data / fhir /" + index.getAt (random)). text
Эта строка никогда не будет посещать последнее значение в index.csv
randoms << org.apache.commons.lang3.RandomUtils.nextInt(0, size-1);
Вы должны изменить его на
randoms << org.apache.commons.lang3.RandomUtils.nextInt(0, size);
Вы можете поместить свой код в глобальный блок try и распечатать проблемный JSON в файл jmeter.log в случае сбоя
Дополнительная информация: