我想从json响应中提取值并将值分配给变量并在后续请求中使用它们。
请求1响应
{
"XXX":"Test Company 1",
"YYY":"Test Company 2",
"ZZZ":"Test Company 3"
}
我想创建动态变量和值,如下所示。
Company_Name_1 = "Test Company 1"
Company_Code_1 = "XXX"
Company_Name_2 = "Test Company 2"
Company_Code_2 = "YYY"
Company_Name_3 = "Test Company 3"
Company_Code_3 = "ZZZ"
并在后续请求中使用上述变量,如下所示。
请求2参数
{
"Date": "${MeetingDate}",
"StartTime": "${StartTime}",
"EndTime": "${EndTime}",
"InvestorsByDate": [{
"Name": "${Company_Name_1}",
"Code": "${Company_Code_1}"
},
{
"Name": "${Company_Name_2}",
"Code": "${Company_Code_2}"
},
{
"Name": "${Company_Name_3}",
"Code": "${Company_Code_3}"
}]
}
公司总数不是一个常数,它不断变化。所以我需要编写一个代码来捕获动态值并将它们分配给动态创建的变量,然后在后续请求中使用它们。我完全不熟悉脚本。请帮我面对这个挑战。非常感谢您的帮助。
答案 0 :(得分:0)
groovy
语言并勾选Cache compiled script if available
框将以下代码放入“脚本”区域:
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
def companies = new JsonSlurper().parse(prev.getResponseData())
def jsonBuilder = new JsonBuilder()
jsonBuilder {
"Date" vars.get('MeetingDate')
"StartTime" vars.get('StartTime')
"EndTime" vars.get('EndTime')
"InvestorsByDate" companies.collect {
[
Name: it.getValue(),
Code: it.getKey()
]
}
}
vars.put('requestBody', jsonBuilder.toPrettyString())
log.info('Generated body: ' + vars.get('requestBody'))
${requestBody}
或${__V(requestBody)}
,如果需要,演示:
参考文献:
答案 1 :(得分:0)
@Dmitri T谢谢,它非常有用,我做了一个修改并按预期工作。
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
def companies = new JsonSlurper().parse(prev.getResponseData())
def jsonBuilder = new JsonBuilder()
jsonBuilder {"InvestorsByDate"companies.collect{[IdString: it.getKey(),Name: it.getValue()]}
}
vars.put('InvestorsByDate', jsonBuilder.toString())
vars.put('InvestorsByDate', vars.get('InvestorsByDate').substring(1))
vars.put('InvestorsByDate', vars.get('InvestorsByDate').substring(0,vars.get('InvestorsByDate').length() - 1))
log.info(vars.get('InvestorsByDate'))
我还需要一个帮助,请尽可能做。是否可以更改公司名称,如下所示。
"InvestorsByDate": [{
"Name": "1. Company Name1",
"Code": "Company_Code_1"
},
{
"Name": "2. Company Name2",
"Code": "Company_Code_2"
},
{
"Name": "3. Company Name3",
"Code": "Company_Code_3"
}]
我想用公司名称连接号码。在json builder中可以吗?