Я создаю сценарий gatling 2.1.3, и мне нужно извлечь данные из тела json.
Пример корпуса:
[
{
"objectId": "FirstFoo",
"pvrId": "413"
"type": "foo",
"name": "the first name",
"fooabilities": {
"foo1": true,
"foo2": true
},
"versions": [23, 23, 23, 23, 23, 23, 24, 23, 23],
"logo": [
{
"type": "firstlogo",
"width": 780,
"height": 490,
"url": "firstlogos/HD/{resolution}.png"
}
]
},
{
"objectId": "SecondFoo",
"pvrId": "414"
"type": "foo",
"name": "the second name",
"fooabilities": {
"foo1": true,
"foo2": false
},
"versions": [23, 23, 23, 23, 23, 23, 24, 23, 23],
"logo": [
{
"type": "secondlogo",
"width": 780,
"height": 490,
"url": "secondlogos/HD/{resolution}.png"
}
]
}
]
и у меня есть этот код, пытающийся извлечь данные:
exec(
http("get object")
.get(commons.base_url_ws + "/my-resource/2.0/object/")
.headers(commons.headers_ws_session).asJSON
.check(jsonPath("$..*").findAll.saveAs("MY_RESULT"))) (1)
.exec(session => {
foreach("${MY_RESULT}", "result") { (2)
exec(session => {
val result= session("result").as[Map[String, Any]]
val objectId = result("objectId")
val version = result("version")
session.set("MY_RESULT_INFO", session("MY_RESULT_INFO").as[List[(String,Int)]] :+ Tuple2(objectId, version))
})
}
session
})
Моя цель: извлечь objectId и 9-е значение из массива версий. Я хочу, чтобы он выглядел как Vector -> [(id1, version1), (id2, version2)] в сеансе для повторного использования позже в другом вызове API.
Меня беспокоит следующее: (1) Будет ли это создавать записи в сеансе с полными подобъектами? Потому что в других ответах я говорил, что это всегда была сохраненная карта ("id" = [{...}]), а здесь у меня нет идентификаторов.
(2) В журналах я вижу, что сеанс загружен с большим количеством данных, но этот foreach никогда не вызывается. Что могло вызвать это?
Я новичок в Scala, поэтому, пожалуйста, укажите, есть ли у меня явные проблемы, которых я не видел.
Я изучил эту проблему: Gatling - цикл через массив JSON, и это не совсем отвечая на мой случай.
Огромное спасибо!
(1)
выглядит подозрительно, она вернет все подструктуры, возможно, не то, что вам нужно.(2)
может пропустить префикс интерполятора строк, извините, я не знаком с gatling. - person Gábor Bakos   schedule 28.01.2015(2)
, вероятно, правильный синтаксис, но немного необычный.) - person Gábor Bakos   schedule 28.01.2015