ZetCode

Groovy JsonSlurper

最后修改于 2025 年 2 月 25 日

Groovy 的 JsonSlurper 是一个强大的 JSON 数据解析工具。它允许您轻松地将 JSON 字符串转换为 Groovy 对象,从而可以方便地读取和操作 JSON 数据。本教程将通过实际示例介绍如何使用 JsonSlurper

使用 JsonSlurper 解析 JSON

要解析 JSON 数据,请创建一个 JsonSlurper 实例,并使用其 parseText 方法将 JSON 字符串转换为 Groovy 对象。

SimpleJsonSlurper.groovy
import groovy.json.JsonSlurper

def jsonText = '''{
    "name": "Alice",
    "age": 30,
    "city": "Wonderland"
}'''

def jsonSlurper = new JsonSlurper()
def jsonObject = jsonSlurper.parseText(jsonText)

println(jsonObject.name)
println(jsonObject.age)
println(jsonObject.city)

此示例演示了如何使用 JsonSlurper 将 JSON 字符串解析为 Groovy 对象。解析后的对象可以像映射一样访问。

从文件中解析 JSON

JsonSlurper 也可以使用 parse 方法从文件中解析 JSON 数据。

JsonSlurperFromFile.groovy
import groovy.json.JsonSlurper

def jsonFile = new File('data.json')
def jsonSlurper = new JsonSlurper()
def jsonObject = jsonSlurper.parse(jsonFile)

println(jsonObject.name)
println(jsonObject.age)
println(jsonObject.city)

此示例展示了如何从文件中解析 JSON 数据。parse 方法读取文件并将其内容转换为 Groovy 对象。

解析 JSON 数组

JsonSlurper 可以处理 JSON 数组,并将它们转换为 Groovy 列表。

JsonSlurperArray.groovy
import groovy.json.JsonSlurper

def jsonText = '''[
    { "name": "Alice", "age": 30 },
    { "name": "Bob", "age": 25 }
]'''

def jsonSlurper = new JsonSlurper()
def jsonArray = jsonSlurper.parseText(jsonText)

jsonArray.each { person ->
    println("Name: ${person.name}, Age: ${person.age}")
}

此示例演示了如何将 JSON 数组解析为 Groovy 列表。数组中的每个元素都是一个映射,可以使用 Groovy 的集合方法进行访问。

处理嵌套 JSON

JsonSlurper 可以解析嵌套的 JSON 结构,允许您访问深度嵌套的数据。

NestedJsonSlurper.groovy
import groovy.json.JsonSlurper

def jsonText = '''{
    "name": "Alice",
    "address": {
        "city": "Wonderland",
        "zip": "12345"
    }
}'''

def jsonSlurper = new JsonSlurper()
def jsonObject = jsonSlurper.parseText(jsonText)

println(jsonObject.name)
println(jsonObject.address.city)
println(jsonObject.address.zip)

此示例展示了如何解析和访问嵌套的 JSON 数据。嵌套的 address 对象使用点表示法进行访问。

使用自定义解析器解析 JSON

JsonSlurper 支持自定义解析器,用于处理特定的 JSON 格式或数据类型。

CustomParser.groovy
import groovy.json.JsonSlurper
import groovy.json.JsonParserType

def jsonText = '''{
    "name": "Alice",
    "age": 30
}'''

def jsonSlurper = new JsonSlurper().setType(JsonParserType.INDEX_OVERLAY)
def jsonObject = jsonSlurper.parseText(jsonText)

println(jsonObject.name)
println(jsonObject.age)

此示例演示了如何将自定义解析器与 JsonSlurper 一起使用。setType 方法允许您指定解析器类型,例如用于优化解析的 INDEX_OVERLAY

使用 JsonSlurper 的最佳实践

来源

Groovy JsonSlurper 文档

在本教程中,我们探讨了如何在 Groovy 中使用 JsonSlurper 解析 JSON 数据。JsonSlurper 是一个多功能的工具,可以简化 JSON 的使用,使其易于在 Groovy 中读取和操作 JSON 数据。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有多年的编程经验。我自 2007 年以来一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面有八年以上的经验。

列出 所有 Groovy 教程