《Groovy极简教程》第12章 Groovy的JSON包

简介: 《Groovy极简教程》第12章 Groovy的JSON包Groovy自带了转换JSON的功能,相关类都在groovy.json包下。本文参考自Groovy文档 Parsing and producing JSON。

《Groovy极简教程》第12章 Groovy的JSON包

Groovy自带了转换JSON的功能,相关类都在groovy.json包下。本文参考自Groovy文档 Parsing and producing JSON。

首先我们定义两个简单的类。

class Person {
    int id
    String name
    List<Book> books

    @Override
    String toString() {
        "Book(id;$id,name:$name,books:${books})"
    }
}

class Book {
    int id
    String name

    @Override
    String toString() {
        "Book(id:$id,name:$name)"
    }
}

JsonOutput

JsonOutput类用于将Groovy对象转换为JSON字符串。使用起来非常简单。JsonOutput功能很强,可以转换各种基本类型、数组、列表、Map、自定义对象等等。对结果再次调用prettyPrint方法,还可以获得格式化的输出,非常方便。

    static void parseSimpleObject() {
        def book = new Book(id: 1, name: 'Thinking in Java')
        def jsonOutput = new JsonOutput()
        def result = jsonOutput.toJson(book)
        println(result)

        //格式化输出
        println(jsonOutput.prettyPrint(result))
    }

//结果
{"id":1,"name":"Thinking in Java"}
{
    "id": 1,
    "name": "Thinking in Java"
}

JsonSlurper

JsonSlurper和JsonOutput相反,用于将Groovy对象转换为Json字符串。它提供了很多parse方法,可以从文件、数组、字节流等各种地方转换对象,这里调用的是parseText方法,从字符串中转换对象。注意转换结果是一个Map,当然如果对象很简单,我们可以使用Groovy的Map解构用Map创建实际对象。

    static void parseSimpleJson() {
        def text = '{"id":1,"name":"Thinking in Java"}'
        def jsonSlurper = new JsonSlurper()

        //获取到的是Map对象
        def map = jsonSlurper.parseText(text)
        println(map)
        //将Map转换为实际对象
        def obj = new Book(map)
        println(obj)
    }

用JsonSlurper的时候需要注意,数组会被转换为ArrayList对象,而object会被转换为Map对象。在进行复杂对象处理的时候要留意这些返回值。

参考资料:
1.http://www.groovy-lang.org/json.html
2.Groovy 处理JSON

相关文章
|
5月前
|
XML 存储 JSON
51. 【Android教程】JSON 数据解析
51. 【Android教程】JSON 数据解析
152 2
|
6月前
|
JSON 前端开发 JavaScript
前端使用lottie-web,使用AE导出的JSON动画贴心教程
前端使用lottie-web,使用AE导出的JSON动画贴心教程
621 2
|
4月前
|
存储 JSON 数据格式
Python教程:json中load和loads的区别
【7月更文挑战第17天】在Python的`json`模块中, `load`与`loads`函数均用于JSON至Python对象的转换, 区别在于: - **`loads`**处理JSON格式的**字符串** 其中`data.json`文件内容为`{&quot;name&quot;: &quot;Bob&quot;, &quot;age&quot;: 30}`。 简而言之, `loads`用于字符串, 而`load`用于文件对象。根据数据来源选择合适的方法。
119 5
|
3月前
|
存储 JSON 数据格式
Pandas 使用教程 CSV - CSV 转 JSON
Pandas 使用教程 CSV - CSV 转 JSON
38 0
|
3月前
|
JSON 数据格式 Python
Pandas 使用教程 JSON
Pandas 使用教程 JSON
42 0
|
5月前
|
存储 JSON JavaScript
Python教程:一文了解Python中的json库
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,易于人类阅读和编写,也易于计算机解析和生成。在Python中,JSON通常用于数据交换和存储,因为它与Python的字典和列表类型相似。
644 2
|
4月前
|
JavaScript 开发工具 数据安全/隐私保护
npm包【详解】(内含npm包的开发、发布、安装、更新、搜索、卸载、查看、版本号更新规则、package.json详解等)
npm包【详解】(内含npm包的开发、发布、安装、更新、搜索、卸载、查看、版本号更新规则、package.json详解等)
111 0
|
5月前
|
JSON Java 数据格式
将JSON格式的字符串转换成List集合引入gson 的jar包
将JSON格式的字符串转换成List集合引入gson 的jar包
40 0
|
5月前
|
JavaScript 编译器 IDE
36.【TypeScript 教程】tsconfig.json 配置
36.【TypeScript 教程】tsconfig.json 配置
36 0
|
6月前
|
JSON 数据格式 Ruby
下一篇
无影云桌面