《Groovy極簡教程》第12章 Groovy的JSON包

《Groovy極簡教程》第12章 Groovy的JSON包

Groovy自帶了轉(zhuǎn)換JSON的功能,相關(guān)類都在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對象轉(zhuǎn)換為JSON字符串。使用起來非常簡單。JsonOutput功能很強,可以轉(zhuǎn)換各種基本類型、數(shù)組、列表、Map、自定義對象等等。對結(jié)果再次調(diào)用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))
    }

//結(jié)果
{"id":1,"name":"Thinking in Java"}
{
    "id": 1,
    "name": "Thinking in Java"
}

JsonSlurper

JsonSlurper和JsonOutput相反,用于將Groovy對象轉(zhuǎn)換為Json字符串。它提供了很多parse方法,可以從文件、數(shù)組、字節(jié)流等各種地方轉(zhuǎn)換對象,這里調(diào)用的是parseText方法,從字符串中轉(zhuǎn)換對象。注意轉(zhuǎn)換結(jié)果是一個Map,當(dāng)然如果對象很簡單,我們可以使用Groovy的Map解構(gòu)用Map創(chuàng)建實際對象。

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

        //獲取到的是Map對象
        def map = jsonSlurper.parseText(text)
        println(map)
        //將Map轉(zhuǎn)換為實際對象
        def obj = new Book(map)
        println(obj)
    }

用JsonSlurper的時候需要注意,數(shù)組會被轉(zhuǎn)換為ArrayList對象,而object會被轉(zhuǎn)換為Map對象。在進行復(fù)雜對象處理的時候要留意這些返回值。

參考資料:
1.http://www.groovy-lang.org/json.html
2.Groovy 處理JSON

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容