如何获取JMeter响应的给定键的特定JSON值?

时间:2017-02-20 09:54:23

标签: json groovy jmeter

我想提取一些数据并将其存储为先前采样器响应的JMeter变量。在我的回答中,有许多所谓的属性,它们具有formulaName,definitionId和id。我想通过formulaName找到一个特定的属性(" formulaName":" F1&#34 ;;已定义的是用户定义的变量)并获取它的definitionId和id并将它们存储在一个变量,如attributeF1DefinitionId和attributeF1Id。 在问题的底部可以找到完整的JSON响应,但没有缩短它以更好地描述我的问题。

{
    "resultType": "OK",
    "messages": null,
    "results": {
         "data": {
             "actionData": {
                "actionId": "00000000-0000-0000-0000-000000000000",
                "modelId": "00000000-0000-0000-0000-000000000000",
                "isNew": false,
                "isReadOnly": false,
                "includeDisplayObjectsInTabVisibility": true,
                "preselectedTabId": "00000000-0000-0000-0000-000000000000",
                "elementId": "AM100000001",
                "localizedName": "AM100000001Action",
                "headerLayout": {
                  "fitToAvailableWidth": true,
                  "fillingColumnIndex0Based": 0,
                  "fitToAvailableHeight": false,
                  "fillingRowIndex0Based": null,
                  "attributes": null
                "tabs": [
                  {
                    "id": "00000000-0000-0000-0000-000000000000",
                    "formulaName": "TD1",
                    "name": "Description",
                    "nameAdditionalInfos": null,
                    "dynamicLayout": {
                      "fitToAvailableWidth": false,
                      "fillingColumnIndex0Based": null,
                      "fitToAvailableHeight": false,
                      "fillingRowIndex0Based": null,
                      "attributes": [
                        {
                          "id": "10000000-0000-0000-0000-000000000001",
                          "name": "Attribute Number 1",
                          "formulaName": "F1",
                          "definitionId": "10000000-0000-0000-0000-000000000001",
                          "isHidden": false
                        },
                        {
                          "id": "20000000-0000-0000-0000-000000000002",
                          "name": "Attribute Number 2",
                          "formulaName": "F2",
                          "definitionId": "20000000-0000-0000-0000-000000000002",
                          "isHidden": false
                        },
                        ......

我们赞赏任何方法,我可以在下一步中自动完成此提取。我真正想要做的是提取几乎所有属性的definitionIds和id(通过其formulaName找到)并为它们生成使用定义的变量。公式名称保存在"用户定义的变量" - Set和我找到了一种用groovy迭代它的方法。

我的方法是在请求采样器中使用JSR223 - groovy后处理器,它加载数据并具有上面的响应。 但我卡住了,过滤了我特定的formulaName。

import groovy.json.*;
import org.apache.jmeter.threads.JMeterVariables;

def response = prev.getResponseDataAsString();    
def json = new JsonSlurper().parseText(response)

def allAttributes = json.results.data.actionData.tabs.dynamicLayout.attributes;

完成JSON响应:

{
  "resultType": "OK",
  "messages": null,
  "results": {
    "data": {
      "actionData": {
        "actionId": "627292b8-5854-4413-bd3c-7bc4a683f58d",
        "modelId": "da5433d1-74f9-43e4-8a98-92c8eb9dcead",
        "isReadOnly": false,
        "preselectedTabId": "14ff3d76-532d-47a6-bb85-5e48b0e7cab9",
        "elementId": "AM200000001",
        "localizedName": "AM200000001Action",
        "tabs": [
          {
            "id": "14ff3d76-532d-47a6-bb85-5e48b0e7cab9",
            "formulaName": "TD2",
            "name": "Description",
            "clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_14ff3d76-532d-47a6-bb85-5e48b0e7cab9",
            "nameAdditionalInfos": null,
            "dynamicLayout": {
              "fitToAvailableWidth": false,
              "fillingColumnIndex0Based": null,
              "fitToAvailableHeight": false,
              "fillingRowIndex0Based": null,
              "attributes": [
                {
                  "id": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b",
                  "name": "F1 attribute name",
                  "formulaName": "F1",
                  "definitionId": "1dc065a6-f071-4547-835b-603aff165754",
                  "isHidden": false,
                  "isReadOnly": false,
                  "isMandatory": true,
                  "label": {
                    "settings": {
                      "bold": false,
                      "underline": false,
                      "color": "#000000",
                      "fontSize": null,
                      "allowTextWrap": true
                    },
                    "text": "F1 attribute name",
                    "colonPosition": 6,
                    "referedClientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_Value",
                    "clientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_Label",
                    "layout": {
                      "positionHorizontal": 3,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeLabelDefault",
                      "parameters": null
                    }
                  },
                  "mandatorySign": {
                    "clientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_MandatorySign",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeMandatorySignDefault",
                      "parameters": null
                    }
                  },
                  "documentation": {
                    "documentations": [
                      {
                        "id": "a2a4fb71-9662-44e3-9279-b4692f9ca8f1",
                        "name": "Attribute documentation",
                        "type": 2
                      }
                    ],
                    "clientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_Documentation",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
                      "parameters": null
                    }
                  },
                  "value": {
                    "width": 570,
                    "options": [
                      {
                        "id": "402e48f4-a313-4869-9355-91b120a93849",
                        "text": "Planned",
                        "cascadingParentItemIds": []
                      },
                      {
                        "id": "f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0",
                        "text": "Implemented",
                        "cascadingParentItemIds": []
                      }
                    ],
                    "cascadingParentAttributeId": null,
                    "allowsNoValue": true,
                    "cascadingParentInitialValue": null,
                    "value": "402e48f4-a313-4869-9355-91b120a93849",
                    "attributeType": "ActionAttributeListSingleEntity",
                    "isDirty": false,
                    "clientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_Value",
                    "layout": {
                      "positionHorizontal": 1,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeSingleSelectListDefault",
                      "parameters": null
                    }
                  },
                  "dependencies": []
                },
                {
                  "id": "c75171ee-bd2f-4396-828e-0f909ae538ed",
                  "name": "F2 attribute name",
                  "formulaName": "F2",
                  "definitionId": "886e8d59-deb5-4725-8080-9033feacb6d3",
                  "isHidden": false,
                  "isReadOnly": false,
                  "isMandatory": true,
                  "label": {
                    "settings": {
                      "bold": false,
                      "underline": false,
                      "color": "#000000",
                      "fontSize": null,
                      "allowTextWrap": true
                    },
                    "text": "F2 attribute name",
                    "colonPosition": 6,
                    "referedClientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_Value",
                    "clientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_Label",
                    "layout": {
                      "positionHorizontal": 3,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeLabelDefault",
                      "parameters": null
                    }
                  },
                  "mandatorySign": {
                    "clientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_MandatorySign",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeMandatorySignDefault",
                      "parameters": null
                    }
                  },
                  "documentation": {
                    "documentations": [
                      {
                        "id": "734d1c1e-0b35-46f3-9580-7f0a31a8201b",
                        "name": "Attribute documentation",
                        "type": 2
                      }
                    ],
                    "clientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_Documentation",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
                      "parameters": null
                    }
                  },
                  "value": {
                    "width": 570,
                    "options": [
                      {
                        "id": "3231d235-36e3-497a-b244-f1ccd3e4a585",
                        "text": "None",
                        "cascadingParentItemIds": [
                          "402e48f4-a313-4869-9355-91b120a93849",
                          "f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
                        ]
                      },
                      {
                        "id": "1b2e9695-0945-4724-85cb-70b4d55bcaf3",
                        "text": "Weak",
                        "cascadingParentItemIds": [
                          "f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
                        ]
                      },
                      {
                        "id": "b89239d8-2bad-48ad-b3b9-f1426b0b5b8c",
                        "text": "Noticeable",
                        "cascadingParentItemIds": [
                          "f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
                        ]
                      },
                      {
                        "id": "8bc090f5-17c1-4040-9a16-2d4a9b609c94",
                        "text": "Strong",
                        "cascadingParentItemIds": [
                          "f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
                        ]
                      },
                      {
                        "id": "4cdee469-9524-4dde-8e24-a878ea8d2138",
                        "text": "Very strong",
                        "cascadingParentItemIds": [
                          "f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
                        ]
                      }
                    ],
                    "cascadingParentAttributeId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b",
                    "allowsNoValue": true,
                    "cascadingParentInitialValue": [
                      "402e48f4-a313-4869-9355-91b120a93849"
                    ],
                    "value": "3231d235-36e3-497a-b244-f1ccd3e4a585",
                    "attributeType": "ActionAttributeListSingleEntity",
                    "isDirty": false,
                    "clientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_Value",
                    "layout": {
                      "positionHorizontal": 1,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeSingleSelectListDefault",
                      "parameters": null
                    }
                  },
                  "dependencies": [
                    {
                      "requiresFullUpdate": false,
                      "sourceAttributeId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b",
                      "targetAttributeId": "c75171ee-bd2f-4396-828e-0f909ae538ed"
                    }
                  ]
                },
                {
                  "id": "16f18829-e905-498a-8c28-2d29fc2e7b8b",
                  "name": "F3 attribute name",
                  "formulaName": "F3",
                  "definitionId": "9aef853b-f4c3-440d-9c32-6d9a13835033",
                  "isHidden": false,
                  "isReadOnly": false,
                  "isMandatory": true,
                  "label": {
                    "settings": {
                      "bold": false,
                      "underline": false,
                      "color": "#000000",
                      "fontSize": null,
                      "allowTextWrap": true
                    },
                    "text": "F3 attribute name",
                    "colonPosition": 6,
                    "referedClientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_Value",
                    "clientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_Label",
                    "layout": {
                      "positionHorizontal": 3,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeLabelDefault",
                      "parameters": null
                    }
                  },
                  "mandatorySign": {
                    "clientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_MandatorySign",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeMandatorySignDefault",
                      "parameters": null
                    }
                  },
                  "documentation": {
                    "documentations": [
                      {
                        "id": "096f02b4-2570-47b2-a346-c27c5102ceda",
                        "name": "Attribute documentation",
                        "type": 2
                      }
                    ],
                    "clientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_Documentation",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
                      "parameters": null
                    }
                  },
                  "value": {
                    "width": 570,
                    "rows": 4,
                    "maxLength": 30000,
                    "searchInfo": null,
                    "value": "Textattribute value was changed! ",
                    "attributeType": "ActionAttributeTextEntity",
                    "isDirty": false,
                    "clientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_Value",
                    "layout": {
                      "positionHorizontal": 1,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeTextboxDefault",
                      "parameters": null
                    }
                  },
                  "dependencies": []
                }
              ],
              "displayObjects": []
            }
          },
          {
            "id": "e72e24ab-0ebd-4dd8-bf7b-4586dbc50da4",
            "formulaName": "TD1",
            "name": "Remarks",
            "clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_e72e24ab-0ebd-4dd8-bf7b-4586dbc50da4",
            "nameAdditionalInfos": null,
            "dynamicLayout": {
              "fitToAvailableWidth": false,
              "fillingColumnIndex0Based": null,
              "fitToAvailableHeight": false,
              "fillingRowIndex0Based": null,
              "attributes": [
                {
                  "id": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987",
                  "name": "Remark attribute 1",
                  "formulaName": "R1",
                  "definitionId": "9709e796-3be7-49e5-a638-ed9de027b680",
                  "isHidden": false,
                  "isReadOnly": true,
                  "isMandatory": false,
                  "label": {
                    "settings": {
                      "bold": false,
                      "underline": false,
                      "color": "#000000",
                      "fontSize": null,
                      "allowTextWrap": true
                    },
                    "text": "Remark attribute 1",
                    "colonPosition": 6,
                    "referedClientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_Value",
                    "clientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_Label",
                    "layout": {
                      "positionHorizontal": 3,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeLabelDefault",
                      "parameters": null
                    }
                  },
                  "mandatorySign": {
                    "clientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_MandatorySign",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeMandatorySignDefault",
                      "parameters": null
                    }
                  },
                  "documentation": {
                    "documentations": [
                      {
                        "id": "d31bb13b-1f12-4f43-8ec4-d91fc405b3ae",
                        "name": "Attribute documentation",
                        "type": 2
                      }
                    ],
                    "clientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_Documentation",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
                      "parameters": null
                    }
                  },
                  "value": {
                    "width": 570,
                    "rows": 4,
                    "maxLength": 30000,
                    "searchInfo": null,
                    "value": "",
                    "attributeType": "ActionAttributeTextEntity",
                    "isDirty": false,
                    "clientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_Value",
                    "layout": {
                      "positionHorizontal": 1,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeTextboxDefault",
                      "parameters": null
                    }
                  },
                  "dependencies": []
                },
                {
                  "id": "379d5451-e5af-42f8-b8b8-52b7f0953261",
                  "name": "Remark attribute 2",
                  "formulaName": "R2",
                  "definitionId": "ba03b62d-bcc1-40c7-9df1-e976151821a2",
                  "isHidden": false,
                  "isReadOnly": true,
                  "isMandatory": false,
                  "label": {
                    "settings": {
                      "bold": false,
                      "underline": false,
                      "color": "#000000",
                      "fontSize": null,
                      "allowTextWrap": true
                    },
                    "text": "Remark attribute 1",
                    "colonPosition": 6,
                    "referedClientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_Value",
                    "clientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_Label",
                    "layout": {
                      "positionHorizontal": 3,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeLabelDefault",
                      "parameters": null
                    }
                  },
                  "mandatorySign": {
                    "clientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_MandatorySign",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeMandatorySignDefault",
                      "parameters": null
                    }
                  },
                  "documentation": {
                    "documentations": [
                      {
                        "id": "129e84fe-0d76-4f8b-b5aa-e80e452998bd",
                        "name": "Attribute documentation",
                        "type": 2
                      }
                    ],
                    "clientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_Documentation",
                    "layout": {
                      "positionHorizontal": 2,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
                      "parameters": null
                    }
                  },
                  "value": {
                    "width": 570,
                    "rows": 4,
                    "maxLength": 30000,
                    "searchInfo": null,
                    "value": "",
                    "attributeType": "ActionAttributeTextEntity",
                    "isDirty": false,
                    "clientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_Value",
                    "layout": {
                      "positionHorizontal": 1,
                      "positionVertical": 1
                    },
                    "displayWidget": {
                      "identifier": "ActionDetailDisplayTypeTextboxDefault",
                      "parameters": null
                    }
                  },
                  "dependencies": []
                }
              ],
              "displayObjects": []
            }
          }
        ],
        "footerLayout": {
          "fitToAvailableWidth": true,
          "fillingColumnIndex0Based": 2,
          "fitToAvailableHeight": false,
          "fillingRowIndex0Based": null,
          "attributes": [
            {
              "id": "AuditComment",
              "name": null,
              "formulaName": "AuditComment",
              "definitionId": "AuditComment",
              "isHidden": false,
              "isReadOnly": false,
              "isMandatory": false,
              "label": {
                "settings": {
                  "bold": false,
                  "underline": false,
                  "color": "#000000",
                  "fontSize": null,
                  "allowTextWrap": false
                },
                "text": "Audit-Trail Comment",
                "colonPosition": 7,
                "referedClientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_EndDateValue",
                "clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_EndDateLabel",
                "layout": {
                  "positionHorizontal": 3,
                  "positionVertical": 2
                },
                "displayWidget": {
                  "identifier": "ActionDetailDisplayTypeLabelDefault",
                  "parameters": null
                }
              },
              "mandatorySign": {
                "clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_EndDateMandatorySign",
                "layout": {
                  "positionHorizontal": 2,
                  "positionVertical": 2
                },
                "displayWidget": {
                  "identifier": "ActionDetailDisplayTypeMandatorySignDefault",
                  "parameters": null
                }
              },
              "documentation": null,
              "value": {
                "width": null,
                "rows": 1,
                "maxLength": null,
                "searchInfo": null,
                "value": "",
                "attributeType": "ActionAttributeTextEntity",
                "isDirty": false,
                "clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_EndDateValue",
                "layout": {
                  "positionHorizontal": 1,
                  "positionVertical": 2
                },
                "displayWidget": {
                  "identifier": "ActionDetailDisplayTypeTextboxDefault",
                  "parameters": null
                }
              },
              "dependencies": null
            }
          ],
          "displayObjects": null
        }
      },
      "linkedActions": null,
      "documentations": null,
      "approvals": null
    }
  }
}

2 个答案:

答案 0 :(得分:0)

我相信你可以使用JSON Extractor轻松完成,例如你可以获得id属性" formulaName"是" F1"使用以下简单的JSON路径查询:

$..[?(@.formulaName == 'F1')].id

JSONPath Conditional Select

类似于definitionId,只需更改上面的JSON Path查询以匹配它:

$..[?(@.formulaName == 'F1')].definitionId

参考文献:

Groovy方法:

import groovy.json.JsonSlurper

def response = prev.getResponseDataAsString()

def json = new JsonSlurper().parseText(response)

def allAttributes  = json.results.data.actionData.headerLayout.tabs[0].dynamicLayout.attributes

allAttributes.each  {  attribute ->
    attribute.each { k, v -> log.info("${k}:${v}") }
}

JSR223 Groovy example

答案 1 :(得分:0)

getJsonResponseString()返回一个字符串,其中包含问题中指定的json响应数据(“完整的json响应”),下面的groovy代码:

import groovy.json.*;

def data = getJsonResponseString()
def json = new JsonSlurper().parseText(data)

def attribute = json.results.data.actionData.tabs.dynamicLayout.attributes.first().find { attribute -> 
  attribute.formulaName == "F1"
}

if (!attribute) {
  println "No attribute with formulaName F1 found!"
} else { 
  println "Results for 'F1': "
  println "  definitionId: ${attribute.definitionId}"
  println "            id: ${attribute.id}"

}

打印:

Results for 'F1': 
  definitionId: 1dc065a6-f071-4547-835b-603aff165754
            id: ca25c1bc-5528-4730-8cc5-3a3c2ca4428b

上面代码中的json对象应该等同于示例代码中的json对象。