Groovy使用JsonSlurper解析JSON时动态变量取值问题求助
问题修正方案
你的问题出在动态属性访问的语法错误上:${jsonFileData}.${Member}.PROCESSOR 会先把 jsonFileData 对象转成字符串,再拼接成类似 [JsonSlurperResult].MEMXYZ.PROCESSOR 的无效表达式,自然无法正确取值。
Groovy 支持两种动态访问对象属性的方式,任选其一即可:
方法1:使用方括号索引访问
def Member = "MEMXYZ" println "Print2 ***** Parsing PROCESSOR = ${jsonFileData[Member].PROCESSOR}"
方法2:使用字符串插值的属性访问语法
def Member = "MEMXYZ" println "Print2 ***** Parsing PROCESSOR = ${jsonFileData."${Member}".PROCESSOR}"
完整验证示例
结合你的代码场景,完整测试代码如下:
import groovy.json.JsonSlurper def jsonFile = new File("your-json-file-path.json") def slurper = new JsonSlurper() def jsonFileData = slurper.parse(jsonFile) // 静态访问(原Print1,正常工作) println "Print1 ***** Parsing PROCESSOR = ${jsonFileData.MEMXYZ.PROCESSOR}" // 动态变量访问(修正后的Print2) def Member = "MEMXYZ" println "Print2 ***** Parsing PROCESSOR = ${jsonFileData[Member].PROCESSOR}"
执行后,Print2会和Print1输出相同的结果:Print2 ***** Parsing PROCESSOR = PROCESSOR XYZ
内容的提问来源于stack exchange,提问作者Ray Lam
相关产品推荐
相关产品推荐

