本文整理自网络,侵删。
本章介绍了如何使用Groovy语言来解析和生成JSON对象。
JSON功能
功能 | 库 |
---|---|
JsonSlurper | JsonSlurper是一个将JSON文本或阅读器内容解析为Groovy数据的类 结构,例如地图,列表和原始类型,如整数,双精度,布尔和字符串。 |
JsonOutput | 此方法负责将Groovy对象序列化为JSON字符串。 |
使用JsonSlurper解析数据
JsonSlurper是一个将JSON文本或阅读器内容解析为Groovy数据结构的类,如地图,列表和原始类型,如Integer,Double,Boolean和String。
句法
def slurper = new JsonSlurper()
JSON slurper将文本或阅读器内容解析为列表和地图的数据结构。
JsonSlurper类自带了一些用于解析器实现的变体。有时,在解析某些字符串时,您可能有不同的要求。让我们举一个例子,其中需要读取从Web服务器的响应返回的JSON。在这种情况下,使用解析器JsonParserLax变量是有益的。此parsee允许在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字符串期间,它尽可能努力地避免创建新的字符数组或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, 23, 42]
解析基本数据类型列表
JSON解析器还支持字符串,数字,对象,true,false和null的原始数据类型。 JsonSlurper类将这些JSON类型转换为相应的Groovy类型。
相关阅读 >>
更多相关阅读请进入《Groovy》频道 >>

深入理解Java虚拟机 JVM高级特性与实践 周志明 第3版
这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典。