サーバーからガトリングに返されたjson応答を解析しようとしています。
サーバーからの私の応答は:
SessionAttribute(
Session(
GetServices,
3491823964710285818-0,
Map(
gatling.http.cache.etagStore -> Map(https://api.xyz.com/services -> ),
gatling.http.cache.lastModifiedStore -> Map(https://api.xyz.com/services -> ),
myresponse -> {
"created":"2014-12-16T22:06:59.149+0000",
"id":"x8utwb2unq8uey23vpj64t65",
"name":"myservice",
"updated":"2014-12-16T22:06:59.149+0000",
"version":null
}),
1418767654142,622,
OK,List(),<function1>),id)
私は自分のスクリプトでこれを行っています:
val scn = scenario("GetServices")
.exec(http("Get all Services")
.post("/services")
.body(StringBody("""{ "name": "myservice" }""")).asJSON
.headers(sentHeaders)
.check(jsonPath("$")
.saveAs("myresponse"))
).exec(session => {
println(session.get("id"))
session
})
応答全体がまだ出力されています。 "x8utwb2unq8uey23vpj64t65"
というIDを取得するにはどうすればよいですか?
もう少し jsonPath を使用して、必要なid
を引き出し、を保存するのが最も簡単かもしれません後で使用するために独自の変数に入れます。 jsonPath
はまだCheckBuilderであるため、結果に直接アクセスすることはできません。一致しない可能性があります。
それをOption[String]
に変換するのは妥当なことのようですが。
したがって、最後の数行は次のようになります。
...
.check(
jsonPath("$.id").saveAs("myresponseId")
)
)
).exec(session => {
val maybeId = session.get("myresponseId").asOption[String]
println(maybeId.getOrElse("COULD NOT FIND ID"))
session
})