Поскольку вопрос помечен как «gatling», за кулисами эта библиотека зависит от Jackson / fastxml для обработки JSON, поэтому мы можем использовать его.
Нет способа извлечь вложенную структурированную частьJSON как String напрямую, но с очень небольшим количеством дополнительного кода результат все еще может быть достигнут.
Таким образом, имея вход JSON:
val json = """{
| "authKey": "34534645645653455454363",
| "member": {
| "memberId": "whatever",
| "firstName": "Jon",
| "lastName": "Doe",
| "address": {
| "line1": "Whatever Rd",
| "city": "White Salmon",
| "state": "WA",
| "zip": "98672"
| },
| "anotherProp": "wahtever"
| }
|}""".stripMargin
Джексона ObjectMapper
можно создать исконфигурирован для использования в Scala:
// import com.fasterxml.jackson.module.scala.DefaultScalaModule
val mapper = new ObjectMapper().registerModule(DefaultScalaModule)
Для простого анализа входного файла json полезен специальный класс case:
case class SrcJson(authKey: String, member: Any) {
val memberAsString = mapper.writeValueAsString(member)
}
Мы также включаем в него val memberAsString
, который будет содержатьнаша целевая строка JSON, полученная обратным преобразованием из первоначально проанализированного member
, который на самом деле является Map
.
Теперь, чтобы проанализировать входные данные json:
val parsed = mapper.readValue(json, classOf[SrcJson])
Ссылки parsed.authKey
и parsed.memberAsString
будут содержать исследуемые значения.