如何从json响应中获取数据作为变量

时间:2017-10-17 17:27:32

标签: jmeter jsonpath

我尝试使用JSONPath获取名为version(第一个)的变量的值,但显然我的解决方案根本不起作用。 我试图使用像$ .. version或$ .container..version这样的表达式。

我的回复如下:

{
  "container" : {
    "version" : 8,
    "updatedBy" : "user111",
    "updatedOn" : "2017-08-17T16:00:24Z",
    "id" : 16,
    "dataEnt" : {
      "dataEntid" : "dataEntid-000032",
      "dataEnttype" : "21"
    },
    "impact" : [ ],
    "operationalFocus" : false,
    "periodicity" : {
      "version" : 0,
      "updatedBy" : "unknown",
      "updatedOn" : "2017-03-31T16:44:08Z",
      "step" : 1,
      "period" : 31084132,
      "_VALIDATION" : {
        "valid" : true,
        "saveAll" : true,
        "reasons" : [ ],
        "details" : {
          "period" : {
            "valid" : true,
            "saveAll" : true,
            "risks" : [ ],
            "rmiCode" : null,
            "rmiMessage" : null
          },
          "version" : {
            "valid" : true,
            "saveAll" : true,
            "risks" : [ ],
            "rmiCode" : null,
            "rmiMessage" : null
          },
          "step" : {
            "valid" : true,
            "saveAll" : true,
            "risks" : [ ],
            "rmiCode" : null,
            "rmiMessage" : null
          }
        },
        "rmiCode" : null,
        "rmiMessage" : null
      },
      "_META" : { }
    }

2 个答案:

答案 0 :(得分:1)

首先,您粘贴的JSON无效:它最后缺少2个大括号(根对象和container对象未关闭)。如果这不是SO上的复制/粘贴错误,但实际数据有问题,您可能需要先纠正它。

如果我理解正确,您需要变量中此字段的值:

"version" : 8

如果是这样,JSON路径应为:

$.container.version

container.version

如果您更喜欢绝对的相对路径。

$..version$.container..version之类的路径会选择多个版本字段("version" : 0属性中的periodicity_VALIDATION内的对象<} / p>

答案 1 :(得分:0)

以下表达式将为您提供所需的结果。 变量: ContainerVersion JSON表达式: $ .. container.version 现在可以使用以下方法调用存储的版本值: $ {ContainerVersion}

如果有多个&#34;版本&#34;标签在那里,然后你可以加载&#34;版本&#34;的所有值。通过以下表达, 的 $ .. container.version [*] 您可以将变量称为 $ {Var_1} $ {Var_2} 等。 添加调试采样器以查看加载的变量名称及其对应的值。

希望以上有帮助...