如何使用加特林JsonPath.query从JSON字符串中检索值?

时间:2018-06-25 19:42:05

标签: scala gatling gatling-jsonpath

给出一个字符串:

val json = """{"id":"derp"}"""

当我尝试使用JsonPath检索ID的值时,我得到了空的迭代器

import io.gatling.jsonpath.JsonPath

JsonPath.query("$.id", json).right.get
// Iterator[Any] = empty iterator

如何获取id的值?

1 个答案:

答案 0 :(得分:0)

尽管JsonPath.query的第二个arg的类型为Any,但此函数似乎不支持多种类型的参数。它不会解析输入字符串,但是希望它已经被解析。作为设计选择看起来有些奇怪。

因此,假设将Jackson用作解析器库,则将执行以下操作并选择id键下的值:

val json = """{"id":"derp"}"""
val parsed = new ObjectMapper().readValue(json, classOf[Object])

// to retrieve the ids as a list:
val ids = JsonPath.query("$.id", parsed).right.get.toList

// the only "id" result of the query
val id = ids.head