Groovy 如何处理 JSON Arrays?

文章导读
Previous Quiz Next 数组处理是任何编程语言中非常常见的方面。在 Groovy 中,我们可以轻松处理 JSON 数组,因为在使用 JsonSlurper 时,JSON 数组会自动转换为 Groovy 的 List 实例。本章中,我们将演示使用 JsonSlur
📋 目录
  1. A 使用 JsonSlurper 解析 JSON 数组
  2. B 使用 JsonSlurper 解析嵌套 JSON 数组
  3. C 使用 JsonBuilder 创建 JSON 数组
A A

Groovy - 处理 JSON 数组



Previous
Quiz
Next

数组处理是任何编程语言中非常常见的方面。在 Groovy 中,我们可以轻松处理 JSON 数组,因为在使用 JsonSlurper 时,JSON 数组会自动转换为 Groovy 的 List 实例。本章中,我们将演示使用 JsonSlurperJsonBuilder 处理 JSON 数组的各种场景。

使用 JsonSlurper 解析 JSON 数组

Example.groovy

import groovy.json.JsonSlurper

def jsonArrayText = '''
[
   {  "name": "Julie", "age": 32, "id": 1 },
   {  "name": "Henry", "age": 27, "id": 2 }
]
'''

def slurper = new JsonSlurper()

def employeesList = slurper.parseText(jsonArrayText)

// 打印 Java.util.ArrayList
println employeesList.getClass().name
// 打印列表
println employeesList

输出

运行上述程序时,我们将得到以下结果。

java.util.ArrayList
[[age:32, id:1, name:Julie], [age:27, id:2, name:Henry]]

这里可以看到,JSON 数组被转换为 List,对象被转换为 Map。

使用 JsonSlurper 解析嵌套 JSON 数组

我们也可以解析嵌套的 JSON 数组。JsonSlurper 会自动将它们转换为嵌套列表,如下所示 −

Example.groovy

import groovy.json.JsonSlurper

def nestedArrayJsonString = '''
{
  "items": [
    [1, 2, 3],
    ["apple", "banana", "cherry"],
    [true, false]
  ]
}
'''

def jsonSlurper = new JsonSlurper()
def nestedData = jsonSlurper.parseText(nestedArrayJsonString)

// 打印 2
println nestedData.items[0][1] 

// 打印 apple,banana,cherry 
println nestedData.items[1].join(',') 

输出

运行上述程序时,我们将得到以下结果。

2
apple,banana,cherry

使用 JsonBuilder 创建 JSON 数组

我们可以通过将 Groovy List 赋值给 JsonBuilder 的 content 属性来创建根级别的 JSON 数组。

Example.groovy

import groovy.json.JsonBuilder
import groovy.json.JsonOutput

def employees = [
   [  name: 'Julie', age: 32, id: 1 ],
   [  name: 'Henry', age: 27, id: 2 ]
]

def builder = new JsonBuilder()
builder.content = employees

def jsonOutput = JsonOutput.prettyPrint(builder.toString())
println jsonOutput

输出

运行上述程序时,我们将得到以下结果。

[
    {
        "name": "Julie",
        "age": 32,
        "id": 1
    },
    {
        "name": "Henry",
        "age": 27,
        "id": 2
    }
]

或者,我们也可以如以下所示,将 JSON 数组传递给 JsonBuilder 的构造函数 −

Example.groovy

import groovy.json.JsonBuilder
import groovy.json.JsonOutput

def employees = [
   [  name: 'Julie', age: 32, id: 1 ],
   [  name: 'Henry', age: 27, id: 2 ]
]

def builder = new JsonBuilder(employees)
def jsonOutput = JsonOutput.prettyPrint(builder.toString())
println jsonOutput

输出

运行上述程序时,我们将得到以下结果。

[
    {
        "name": "Julie",
        "age": 32,
        "id": 1
    },
    {
        "name": "Henry",
        "age": 27,
        "id": 2
    }
]