2017-02-20 85 views
0

我想提取一些数据并将其存储为先前采样器响应的JMeter变量。在我的回应中,有很多所谓的属性,它们都有一个公式名称,一个定义ID和一个ID。我想通过formulaName(“formulaName”:“F1”;定义的是用户定义的变量)找到一个特定的属性,并获取它的definitionId和id,并将它们存储在像attributeF1DefinitionId和attributeF1Id这样的变量中。 在问题的底部可以找到完整的JSON响应,这并不是为了更好地描述我的问题而缩短的。如何获取JMeter响应给定键的特定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 - 常规后处理器中加载数据并具有上述响应。 但我坚持,与我的具体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 
    } 
    } 
} 
+0

你能否用有效的json文件更新你的例子?否则,我们提出的任何示例都不适用于您的实际文档。例如,'headerLayout'中是否包含'tabs'?从缩进你猜不到,但从卷发你会猜测是的。 –

+0

我用有效的JSON响应更新了示例。 – VolJin

回答

0

我相信你能做到用JSON Extractor更容易,例如,你可以得到id属性,其中“formulaName”是“F1”使用下面这个简单的JSON路径查询:

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

JSONPath Conditional Select

同样为definitionId,只是改变了上述JSON路径查找与之相匹配的:

$..[?(@.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

+0

对不起,我没有很好地描述我的问题。我认为这种方法不适合我,因为我需要遍历公式名称并自动生成此定义标识和标识符。所以我实际上需要提取几乎所有的属性(attributeF1DefinitionId,attributeF2DefinitionId ...,attributeF1Id,attributeF2Id ...) – VolJin

+0

嗯,我仍然看不到你想达到什么,但我添加了一个迭代通过这些“属性“ 以防万一。请参阅[解析和生成JSON](http://groovy-lang.org/json.html)和[Groovy是新的黑色](https://www.blazemeter.com/blog/groovy-new-black)文章更多细节。 –

+0

如何在groovy脚本中使用完全相同的JSON路径过滤器查询? '$ .. [?(@。formulaName =='F1')]。id' 我想避免指定选项卡[0]。因为公式名称可以在任何选项卡中。或者你在给我的时髦片段中做得如何? – VolJin

0

随着getJsonResponseString()返回与如在问题( “完全JSON响应”)中指定的JSON响应数据的字符串,下面的常规代码:

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对象。