如何使用Groovy将JSON字符串转换为数组并提取指定JSON值生成数组(附示例)
Groovy实现JSON字符串转数组及提取特定值的方法
Hey there! Groovy makes JSON handling super straightforward thanks to its built-in JsonSlurper tool—no extra libraries needed for most cases. Let's walk through both the general approach and your specific example step by step.
一、JSON字符串转数组的通用步骤
Groovy的JsonSlurper can轻松将JSON字符串解析成Groovy集合(比如List、Map),再转成你需要的数组类型。具体步骤如下:
- 导入JsonSlurper类:首先引入Groovy的JSON处理核心类
- 创建JsonSlurper实例:初始化解析器对象
- 解析JSON字符串:把JSON字符串转成Groovy原生集合对象
- 转换为数组:根据需求转成指定类型的数组(如
String[]、Integer[])
通用场景示例代码:
import groovy.json.JsonSlurper def jsonSlurper = new JsonSlurper() // 示例JSON数组字符串 def jsonArrayString = '["apple", "banana", "cherry"]' // 解析成Groovy List def groovyList = jsonSlurper.parseText(jsonArrayString) // 转成String类型数组 String[] stringArray = groovyList.toArray(new String[0]) println stringArray // 输出:[apple, banana, cherry]
二、提取示例JSON中的值生成数组
针对你给出的示例JSON:
{ "ITAB": [ "1", "12", "123", "1234", "12345" ] }
这个JSON是一个包含ITAB键的对象,对应的值是一个字符串数组。我们可以直接提取这个列表,再转成所需的数组类型:
方法1:提取为字符串数组
import groovy.json.JsonSlurper def targetJsonString = '{ "ITAB": [ "1", "12", "123", "1234", "12345" ] }' def jsonSlurper = new JsonSlurper() // 解析JSON为Groovy Map对象 def jsonMap = jsonSlurper.parseText(targetJsonString) // 提取ITAB对应的List,再转成String数组 String[] itabStringArray = jsonMap.ITAB.toArray(new String[0]) // 验证输出 itabStringArray.each { println it } // 输出结果: // 1 // 12 // 123 // 1234 // 12345
方法2:转换为整数数组(如果需要)
如果需要把这些字符串类型的数字转成整数数组,只需多一步类型转换:
// 提取后转成Integer类型数组 Integer[] itabIntArray = jsonMap.ITAB.collect { it.toInteger() }.toArray(new Integer[0]) println itabIntArray // 输出:[1, 12, 123, 1234, 12345]
小提示
- 版本兼容:Groovy 2.3+推荐使用
groovy.json.JsonSlurper;老版本可以用groovy.json.JsonSlurperClassic,用法基本一致。 - 空值防护:如果JSON中
ITAB字段可能不存在,建议加空判断避免报错:def itabList = jsonMap.ITAB ?: [] // 当ITAB不存在时,返回空列表
内容的提问来源于stack exchange,提问作者Febin
相关产品推荐
相关产品推荐

