JMeter中嵌套JSON修正:dicomTags归属与数组值完整化问题
修正后的Groovy脚本及说明
核心修正点
- 将
dicomTags直接嵌套到dicomTemplate内部作为子键,解决单独放置的结构问题 - 修正拼写错误(原
dicomTaS改为dicomTags),确保所有标签项完整纳入dicomTags数组
完整修正代码
import groovy.json.JsonSlurper import groovy.json.JsonBuilder def response = new groovy.json.JsonSlurper().parse(prev.getResponseData()) def finalRequest = [:] // 直接构建包含dicomTags的完整dicomTemplate def dicomTemplate = new JsonBuilder().dicomTemplate { templateName "Default" templateDesc "Default" templateType "DEFAULT" // 嵌套dicomTags作为子键,包含所有标签项 dicomTags([ { tagGroup "0002" tagElement "0002" tagName "Media Storage SOP Class UID" updatedOn "2021-10-05T22:03:36.000+00:00" labelValue 131074 mandatory "1" }, { tagGroup "0002" tagElement "0010" tagName "Transfer Syntax UID" tagKeyword "TransferSyntaxUID" createdOn "2021-06-02T20:40:59.000+00:00" numericLabel "00020010" labelValue 131088 mandatory "1" } // 可在此处继续添加更多需要的DICOM标签项 ]) }.content // 填充finalRequest的其他字段 finalRequest.studyDTO = true finalRequest.allSites = true finalRequest.allSubjects = true finalRequest.allStates = true finalRequest.allVisits = true finalRequest.modalities = response.modalities finalRequest.allModalities = true finalRequest.allExamDates = true finalRequest.allSeries = true finalRequest.transferType = "DICOM" finalRequest.sftpLocations = response.sftpLocations finalRequest.dicomLocations = response.dicomLocations finalRequest.customFolder = null finalRequest.folderStructure = null finalRequest.customFile = null finalRequest.fileStructure = null finalRequest.includePS = null finalRequest.softEditOverride = true // 将完整的dicomTemplate放入finalRequest finalRequest.dicomTemplate = dicomTemplate vars.put('finalPayload', new groovy.json.JsonBuilder(finalRequest).toPrettyString())
修正细节说明
- 结构嵌套修复:不再分开构建
dicomTemplate和dicomTags,而是在dicomTemplate的闭包内直接定义dicomTags数组,确保它成为dicomTemplate的合法子键,符合预期的JSON层级结构。 - 拼写错误修正:原代码中
dicomTaS是笔误,改为正确的dicomTags,避免生成错误的键名导致结构异常。 - 完整标签支持:
dicomTags以数组形式承载所有标签对象,你可以在数组中继续追加更多DICOM标签项,确保所有需要的标签都被完整包含。
内容的提问来源于stack exchange,提问作者MAX GRIMM
相关产品推荐
相关产品推荐

