json - JsonSlurper 的格式化问题
问题描述
我有以下 JSON 响应。
{
"data": {
"statusCode": 200,
"success": true,
"technicalSettings": [
{
"name": "Abcd Advanced",
"humanoid": "adult",
"uid": "1da67bdc-0173-1000-0000-53f11ba5a31e",
"technicalSettingsUID": "1dae2bdc-0173-1000-0000-53uj91ba5a31e",
"checksum": "101a1ddf3f59c4e666dadc9677bf998c78216e8e8d79882e8b0d19ddb77e",
"protocolNumber": "",
"modifiedDate": "Tue, 21 Jul 2020 04:06:03 GMT",
"version": 1,
"protocolUID": "df26c1fc-328e-43b6-b285-e0671267dae1",
"dependencies": [
"rawprotocols/1dae2bdc-0173-1000-0000-53f11ba5a31e.zip"
],
"deviationChecksum": {
"subsectionChecksum": [
],
"aggregatedDeviationChecksum": "101a1ddf3f59c4e6bgtydc9bdad55abf998c78216e8e8d79882e8b0d19ddb77e"
},
"protocolmetadata": {
"MRSessionData": {
"entry": "Feet First",
"fieldstrength": "30000",
"gradcoil": "11",
"position": "Supine",
"MR_VERSION": "DV26.0#2",
"autostart": "0",
"srrating": "120",
"tabentry": "None"
}
},
"clinicalInstructions": [
],
"population": "adult"
}
],
"library": {
"vsion": 5,
"dmVersion": 3
}
},
"success": true,
"statusCode": 200,
"error": ""
}
我正在使用 JSON 提取器来获取 data.technicalSettings 的值。
现在,当我将变量 pPublishTechSettings 中的值与 JsonSlurper 一起使用时,即使我得到了所有值,字符串 strPublishTechSettings 中值的顺序也不同。如何以与原始响应 JSON 中相同的顺序获取值?
这是我的代码。
def technicalSettings = new groovy.json.JsonSlurper().parseText(vars.get('pPublishTechSettings_ALL'))
technicalSettings.eachWithIndex { setting, index ->
strPublishTechSettings = new groovy.json.JsonBuilder(setting).toString()
log.info('Values' + ': ' + strPublishTechSettings )
}
解决方案
鉴于您使用的是 JSON Extractor,您对提取元素的顺序没有任何保证,它发生在JsonPath 库的引擎盖下
鉴于您使用的是 Groovy,您可以摆脱这个 JSON Extractor 位并将所有内容移至JSR223 PostProcessor:
def technicalSettings = new groovy.json.JsonSlurper().parse(prev.getResponseData()).data.technicalSettings
technicalSettings.eachWithIndex { setting, index ->
strPublishTechSettings = new groovy.json.JsonBuilder(setting).toString()
}
更多信息:
推荐阅读
- javascript - 根据初始数组返回一个新的排名数组
- java - Okhttp3:将全局标头添加到所有请求错误
- python - 如何将栅格 dtype 从 uint8 转换为 float32?
- c# - 文件上传和下载 Asp.Net Core Web API
- graph - 如何检查无向图中长度正好为 x 的两个节点之间是否存在路径?
- go - 在重定向错误消息中保留原始 URL
- android - 创建标签位于文本字段边界内的文本字段
- function - 如果使用 Stripe 付款为真,如何添加功能
- postgresql - Docker Postgres 图像无法访问
- ios - 使用 struct Array 实现 Swift/iOS searchBar 时遇到问题