【问题标题】:How to extract multiple correlating variables from a JSon如何从 JSon 中提取多个相关变量
【发布时间】:2019-08-15 08:18:53
【问题描述】:

我必须从 JMeter 中的响应(即 json)中提取多个相关变量。下面列出了部分响应:

[
  {
    "data": {
      "id": "efaa6876-7a8d-4723-9d85-1ed99e822f06",
      "type": "courses",
      "attributes": {
        "created-at": "2019-02-07T16:38:50.735Z",
        "contents-count": 267,
        "units": [
          {
            "id": "31b5fcb1-24ee-441e-a0ee-ca859fc9a89d",
            "position": null,
            "progress": 0,
            "completed": false,
            "show_name": false,
            "node_id": "1",
            "children": [
              {
                "id": "b8ed75a3-0390-4273-82c3-03ee6eba729c",
                "position": null,
                "image": null,
                "progress": 0,
                "completed": false,
                "show_name": true,
                "node_id": "2",
                "children": [],
                "contents": [
                  {
                    "id": "fa1bdc2f-4330-425c-9c10-3734d07125aa",
                    "link": {
                      "url": "#",
                      "target": "_blank",
                      "class": "learning-object-link",
                      "data": {
                        "id": "fa1bdc2f-4330-425c-9c10-3734d07125aa",
                        "user-role": "teacher",
                        "open-method-tablet": "newtab",
                        "open-method-desktop": "modal",
                        "content-open-method": null,
                        "modal-size-method": "fully_responsive",
                        "fixed-width": null,
                        "fixed-height": null,
                        "aspect-ratio": null
                      }
                    },
                    "is_work": false,
                    "is_fun": false,
                    "completed": false,
                    "total_activities": 2,
                    "completed_activities": 0,
                    "progress": 0,
                    "updated_at": false,
                    "attempts": 0,
                    "duration": null
                  },
                  {
                    "id": "ceceabfd-5151-4656-af5d-3392c5a4c04c",
                      "link": {
                      "url": "#",
                      "target": "_blank",
                      "class": "learning-object-link",
                      "data": {
                        "id": "ceceabfd-5151-4656-af5d-3392c5a4c04c",
                        "user-role": "teacher",
                        "open-method-tablet": "newtab",
                        "open-method-desktop": "modal",
                        "content-open-method": null,
                        "modal-size-method": "fully_responsive",
                        "fixed-width": null,
                        "fixed-height": null,
                        "aspect-ratio": null
                      }
                    },
                    "is_work": false,
                    "is_fun": false,
                    "completed": false,
                    "total_activities": 2,
                    "completed_activities": 0,
                    "progress": 0,
                    "updated_at": false,
                    "attempts": 0,
                    "duration": null
                  }
                ]
              },
              {
                "id": "60639cbd-f872-492d-b8e9-db83f8789fcf",
                "position": null,
                "image": null,
                "progress": 0,
                "completed": false,
                "show_name": true,
                "node_id": "3",
                "children": [],
                "contents": [
                  {
                    "id": "1825f834-7099-4bb4-b7a2-fc634faffc86",
                      "link": {
                      "url": "#",
                      "target": "_blank",
                      "class": "learning-object-link",
                      "data": {
                        "id": "1825f834-7099-4bb4-b7a2-fc634faffc86",
                        "user-role": "teacher",
                        "open-method-tablet": "newtab",
                        "open-method-desktop": "modal",
                        "content-open-method": null,
                        "modal-size-method": "fully_responsive",
                        "fixed-width": null,
                        "fixed-height": null,
                        "aspect-ratio": null
                      }
                    },

要继续下一个请求,我必须提取单元 id(例如 31b5fcb1-24ee-441e-a0ee-ca859fc9a89d)、儿童 id(例如 b8ed75a3-0390-4273-82c3-03ee6eba729c)和内容 id(例如 fa1bdc2f- 4330-425c-9c10-3734d07125aa)。有几个单元,每个单元有几个孩子,每个孩子有几个内容。每个内容 ID 只匹配一个子 ID,每个子 ID 只匹配一个单元 ID。必须随机选择 ID。

我尝试从响应中提取所有 id 并随机使用它们,但它不起作用。

【问题讨论】:

  • 我觉得应该先提取unit id,再用这个值提取children id。当我尝试提取单元 id 时,会提取所有 id - 单元 id、子 id 和内容 id。如何仅提取没有任何子 ID 的单元 ID?

标签: json jmeter json-path-expression json-extract


【解决方案1】:

要仅提取单元 ID,您可以使用以下 JSON 路径表达式:

$..data.attributes.units[?(@.id)].id

单元 ID 的随机值也可以使用 JMeter JSON 提取器提取:

【讨论】:

  • 当然,请您接受这是一个答案并点赞。
  • 恐怕我的声望太低了,不能这样做 :( 我收到以下消息:感谢您的反馈!声望低于 15 的人的投票会被记录,但不要更改公开显示的帖子分数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多