- Groovy 教程
- Groovy - 主页
- Groovy - 概述
- Groovy - 环境
- Groovy - 基本语法
- Groovy - 数据类型
- Groovy - 变量
- Groovy - 运算符
- Groovy - 循环
- Groovy - 决策
- Groovy - 方法
- Groovy - 文件 I/O
- Groovy - 可选
- Groovy - 数字
- Groovy - 字符串
- Groovy - 范围
- Groovy - 列表
- Groovy - 地图
- Groovy - 日期和时间
- Groovy - 正则表达式
- Groovy - 异常处理
- Groovy - 面向对象
- Groovy - 泛型
- Groovy - 特征
- Groovy - 闭包
- Groovy - 注释
- Groovy-XML
- Groovy-JMX
- Groovy - JSON
- Groovy-DSLS
- Groovy - 数据库
- Groovy - 构建者
- Groovy - 命令行
- Groovy - 单元测试
- Groovy - 模板引擎
- Groovy - 元对象编程
- Groovy 有用的资源
- Groovy - 快速指南
- Groovy - 有用的资源
- Groovy - 讨论
Groovy - JSON
本章介绍如何使用 Groovy 语言来解析和生成 JSON 对象。
JSON 函数
先生编号 | 函数和库 |
---|---|
1 |
杰森吞食者 JsonSlurper 是一个将 JSON 文本或阅读器内容解析为 Groovy 数据的类 映射、列表等结构和整数、双精度、布尔值和字符串等基本类型。 |
2 |
Json输出 该方法负责将 Groovy 对象序列化为 JSON 字符串。 |
使用 JsonSlurper 解析数据
JsonSlurper 是一个将 JSON 文本或阅读器内容解析为 Groovy 数据结构的类,例如映射、列表和原始类型(如整数、双精度、布尔值和字符串)。
句法
def slurper = new JsonSlurper()
JSON slurper 将文本或阅读器内容解析为列表和映射的数据结构。
JsonSlurper 类附带了几个用于解析器实现的变体。有时,在解析某些字符串时您可能有不同的要求。让我们举一个例子,其中需要读取从 Web 服务器的响应返回的 JSON。在这种情况下,使用解析器 JsonParserLax 变体是有益的。该解析器允许在 JSON 文本中添加注释,并且不允许引用字符串等。要指定这种解析器,您需要在定义 JsonSlurper 的对象时使用 JsonParserType.LAX 解析器类型。
让我们看看下面给出的一个例子。该示例用于使用 http 模块从 Web 服务器获取 JSON 数据。对于这种类型的遍历,最好的选择是将解析器类型设置为 JsonParserLax 变体。
http.request( GET, TEXT ) { headers.Accept = 'application/json' headers.'User-Agent' = USER_AGENT response.success = { res, rd -> def jsonText = rd.text //Setting the parser type to JsonParserLax def parser = new JsonSlurper().setType(JsonParserType.LAX) def jsonResp = parser.parseText(jsonText) } }
同样,Groovy 中还提供以下附加解析器类型 -
JsonParserCharArray 解析器基本上采用 JSON 字符串并对底层字符数组进行操作。在值转换期间,它复制字符子数组(一种称为“斩波”的机制)并单独对它们进行操作。
JsonFastParser 是 JsonParserCharArray 的特殊变体,是最快的解析器。JsonFastParser 也称为索引覆盖解析器。在解析给定的 JSON 字符串期间,它会尽可能避免创建新的 char 数组或 String 实例。它只保留指向底层原始字符数组的指针。此外,它会尽可能晚地推迟对象创建。
JsonParserUsingCharacterSource 是针对非常大文件的特殊解析器。它使用一种称为“字符窗口”的技术来解析具有恒定性能特征的大型 JSON 文件(在本例中,大型意味着文件大小超过 2MB)。
解析文本
让我们看一下如何使用 JsonSlurper 类的一些示例。
import groovy.json.JsonSlurper class Example { static void main(String[] args) { def jsonSlurper = new JsonSlurper() def object = jsonSlurper.parseText('{ "name": "John", "ID" : "1"}') println(object.name); println(object.ID); } }
在上面的例子中,我们是 -
首先创建 JsonSlurper 类的实例
然后,我们使用 JsonSlurper 类的 parseText 函数来解析一些 JSON 文本。
当我们获取对象时,可以看到我们实际上可以通过键访问 JSON 字符串中的值。
上述程序的输出如下 -
John 1
解析整数列表
我们再看一下 JsonSlurper 解析方法的另一个例子。在下面的示例中,我们传递一个整数列表。您将从以下代码中注意到,我们能够使用每个方法的 List 方法并向其传递一个闭包。
import groovy.json.JsonSlurper class Example { static void main(String[] args) { def jsonSlurper = new JsonSlurper() Object lst = jsonSlurper.parseText('{ "List": [2, 3, 4, 5] }') lst.each { println it } } }
上述程序的输出如下 -
List=[2, 3, 4, 5]
解析原始数据类型列表
JSON 解析器还支持字符串、数字、对象、true、false 和 null 等基本数据类型。JsonSlurper 类将这些 JSON 类型转换为相应的 Groovy 类型。
以下示例演示如何使用 JsonSlurper 解析 JSON 字符串。在这里您可以看到 JsonSlurper 能够将各个项目解析为其各自的原始类型。
import groovy.json.JsonSlurper class Example { static void main(String[] args) { def jsonSlurper = new JsonSlurper() def obj = jsonSlurper.parseText ''' {"Integer": 12, "fraction": 12.55, "double": 12e13}''' println(obj.Integer); println(obj.fraction); println(obj.double); } }
上述程序的输出如下 -
12 12.55 1.2E+14
Json输出
现在我们来谈谈如何以 Json 格式打印输出。这可以通过 JsonOutput 方法来完成。该方法负责将 Groovy 对象序列化为 JSON 字符串。
句法
Static string JsonOutput.toJson(datatype obj)
参数- 参数可以是数据类型的对象 - 数字、布尔值、字符、字符串、日期、地图、闭包等。
返回类型- 返回类型是 json 字符串。
例子
以下是如何实现这一目标的简单示例。
import groovy.json.JsonOutput class Example { static void main(String[] args) { def output = JsonOutput.toJson([name: 'John', ID: 1]) println(output); } }
上述程序的输出如下 -
{"name":"John","ID":1}
JsonOutput 也可用于普通的旧 groovy 对象。在下面的示例中,您可以看到我们实际上将 Student 类型的对象传递给 JsonOutput 方法。
import groovy.json.JsonOutput class Example { static void main(String[] args) { def output = JsonOutput.toJson([ new Student(name: 'John',ID:1), new Student(name: 'Mark',ID:2)]) println(output); } } class Student { String name int ID; }
上述程序的输出如下 -
[{"name":"John","ID":1},{"name":"Mark","ID":2}]