按布尔值过滤节点

时间:2019-08-22 13:43:07

标签: json jmeter extract jsonpath

我必须通过IsNew参数(正确或错误)过滤JSON JSON的一部分如下:

{
"data": [
  {
    "type": "users",
    "attributes": {
      "first-name": "student21",
      "last-name": "student21",
      "username": "student21",
      "role": "student",
      "IsNew": true
    },
    "relationships": {
      "groups": {
        "data": [
          {
            "type": "groups",
            "id": "123f"
          }
        ]
      }
    }
  },
  {
    "type": "users",
    "attributes": {
      "first-name": "student23",
      "last-name": "student23",
      "email": "",
      "avatar-url": null,
      "username": "student23",
      "role": "student",
      "IsNew": false
    },
    "relationships": {
      "groups": {
        "data": [
          {
            "type": "groups",
            "id": "456"
          }
        ]
      }
    }
  }
  ]

}

我尝试了以下表达式:

$ .. data .. [?(@。IsNew == true)]。用户名

$ .. data .. [?(@。IsNew =='true')]。用户名

$ .. data .. [?(@。IsNew ==“ true”)]。用户名

所有这些表达式都不会返回任何结果。

我需要分别为学生使用“ IsNew” == true和“ IsNew” == false的学生提取用户名。

1 个答案:

答案 0 :(得分:0)

  1. 要为“ IsNew” == true的学生提取用户名,请使用具有以下设置的JSON提取器:
    • JSON路径表达式:$.data..attributes[?(@.IsNew =~ /.*true/i)].username
    • 比赛编号-1 [以获取多个学生的所有比赛]

enter image description here

  1. 要为“ IsNew” == false的学生提取用户名,请使用具有以下设置的JSON提取器:
    • JSON路径表达式:$.data..attributes[?(@.IsNew =~ /.*false/i)].username
    • 比赛编号-1 [以获取多个学生的所有比赛]

enter image description here

  1. 使用以下变量进行进一步处理:

    • $ {FalseStudent_matchNr}或$ {FalseStudent}(如果您在JSON提取器中使用了匹配除外,则为-1)
    • $ {TrueStudent_matchNr}或$ {TrueStudent}(如果您在JSON Extractor中使用了-1以外的匹配项)

enter image description here