Groovy修改JSON时出现参数类型不匹配错误求助
问题分析与解决
错误原因
TerminatingInstances是数组类型,你直接通过builder.content.TerminatingInstances.InstanceId赋值,相当于试图给数组对象本身设置InstanceId属性,但数组并没有这个属性,自然会触发argument type mismatch类型不匹配错误。
解决方法
你需要先定位到数组中的具体元素,再修改该元素的InstanceId属性。以下是具体实现示例:
示例代码
import groovy.json.JsonSlurper import groovy.json.JsonBuilder // 读取并解析JSON文件 def jsonSlurper = new JsonSlurper() def content = jsonSlurper.parse(new File("response.json")) // 修改数组中的元素(两种方式) // 方式1:遍历数组修改所有元素的InstanceId content.TerminatingInstances.each { instance -> instance.InstanceId = "id-updated" } // 方式2:修改数组中指定索引的元素(比如第一个元素,索引从0开始) // content.TerminatingInstances[0].InstanceId = "id-updated" // 用JsonBuilder生成修改后的JSON def builder = new JsonBuilder(content) println(builder.toPrettyString())
关键说明
- 数组类型的JSON节点,必须通过索引(如
[0])或者遍历(如each方法)获取到单个对象元素后,才能修改其属性。 - 修改完成后,直接将修改后的
content传入JsonBuilder即可生成新的JSON内容。
内容的提问来源于stack exchange,提问作者Good Panic
相关产品推荐
相关产品推荐

