一、前言
上一篇我们学习了 Groovy 的核心语法,我们这篇接下来看看 Groovy 的高级用法。
二、Groovy 高级用法
2.1、Json 操作
我们先来看看 groovy 中对象与 json 字符串之间的相互转换:
除此之外,我们也可以直接使用 java 的类库来操作 json,比如 java 的 gson 库。
下面我们来看个真实请求网络并解析返回 json 的例子:
2.2、XML文件
java 中处理 xml 文件有以下两种方式:
groovy 处理 xml 文件比 java 要简单很多,下面我们先写一段 xml :
final String xml = '''
<response version-api="2.0">
<value>
<books id="1" classification="android">
<book available="20" id="1">
<title>疯狂Android讲义</title>
<author id="1">李刚</author>
</book>
<book available="14" id="2">
<title>第一行代码</title>
<author id="2">郭林</author>
</book>
<book available="13" id="3">
<title>Android开发艺术探索</title>
<author id="3">任玉刚</author>
</book>
<book available="5" id="4">
<title>Android源码设计模式</title>
<author id="4">何红辉</author>
</book>
</books>
<books id="2" classification="web">
<book available="10" id="1">
<title>Vue从入门到精通</title>
<author id="4">李刚</author>
</book>
</books>
</value>
</response>
'''
我们来看看 groovy 中如何解析:
可以看到,整个过程像在直接操作 xml 文件一样,非常方便。
下面我们看看 xml 遍历的方式:
groovy 中还有更简便的遍历,深度遍历和及广度遍历:
在实际使用中,我们可以利用 XmlSlurper 在 Android 中获取 AndroidManifest.xml 里的信息,代码如下所示:
下面我们来看看如何生成 xml,先看静态生成:
在实际开发中,更常见的是根据实体中的数据动态生成 xml:
如果要从服务器请求回来的 json 字符串转换为 xml 可以通过如下步骤,并且可以封装起来:
2.3、文件处理
java 中处理文件的核心就是流。下面我们来看看 groovy 中对文件有哪些操作,所有 java 对文件的处理类 groovy 都可以使用,并且 groovy 扩展了许多更加快捷和强大的方法。
遍历:
实际使用中一般我们不会去这样遍历文件的内容,有更简单的方式获取文件内容:
可以看到,相比 java 的复杂的流操作,groovy 的操作真的是特别简洁了。当然 groovy 中 file.getText() 的源码也是采用流操作,只是 groovy 讲它封装成一个方法便于我们使用,并且不用关注流的关闭。
读取文件部分内容:
下面我们再来看看拷贝文件的操作:
下面再看看对象的读写:
三、总结
学完了 groovy 核心语法与高级用法,下面我们来总结下 groovy 与 java 的区别:
- 写法上:没有 java 那么多的限制
- 功能上:对 java 已有的功能进行了极大的扩展
- 作用上:既可以编写应用,也可以编写脚本