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对象。在进行复杂对象处理的时候要留意这些返回值。

如果需要了解详细信息,请直接查阅本文开始的文档链接。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 听闻《欢乐颂》第二部质量下滑得厉害,但收视率居高不下,话题热度依然不减。 电视剧慌的眼下,作为黄金档播出的现象级电...
    回聲echo阅读 262评论 0 0
  • 1.从这次课程中,你学到了什么?对你有哪些启发? 最大的启发在于定位以及定位的方向。 定位。作为一...
    活得精彩2017阅读 237评论 0 0