jsonpath在jsonarray中查找字符串值,与数组索引

时间:2016-09-20 02:09:25

标签: arrays json scala gatling jsonpath

我有一个Gatling JSON对象的数组。该对象包含错误消息,例如

"error": [
    {
      "errorCode": "111",
      "errorMessage": "very dynamic error :- at [Source: java.io.PushbackInputStream@5d0edb12; line: 6, column: 6]; nested exception is com.fasterxml.jackson.core.JsonParseException: "
    },
    {
      "errorCode": null,
      "errorMessage": "Fixed Error Message"
    },
    {
      "errorCode": "112",
      "errorMessage": "Again some error message"
    }
  ]

我将jsonpath视为

($.error[1].errorMessage).is("Fixed Error Message")

但是,不同的API具有不同的错误对象,并且固定的errorMessage可以放在任何索引位置的数组中。

如何在不担心arrayIndex的情况下动态检查jsonArray中是否存在修复的errorMessage?

我是否可以创建一个独立匹配字符串和数组元素的查询而不提及数组索引,如下所示? ($.error[*].errorMessage).is("Fixed Error Message")

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容过滤数组:

JsonPath.query("$.error[?(@.errorMessage=='Fixed Error Message')]", json)

编辑1:

首选检查是否确实找到了消息:

jsonPath("$.error[?(@.errorMessage=='Fixed Error Message')]").exists

如果你想进行.is()检查,你可以尝试以下(不是很好):

jsonPath("$.error[?(@.errorMessage=='Fixed Error Message')].errorMessage").is("Fixed Error Message")