《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功能很強,可以轉換各種基本類型阵面、數(shù)組轻局、列表洪鸭、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方法邑茄,可以從文件姨蝴、數(shù)組、字節(jié)流等各種地方轉換對象肺缕,這里調用的是parseText方法,從字符串中轉換對象同木。注意轉換結果是一個Map,當然如果對象很簡單彤路,我們可以使用Groovy的Map解構用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轉換為實際對象
def obj = new Book(map)
println(obj)
}
用JsonSlurper的時候需要注意,數(shù)組會被轉換為ArrayList對象洲尊,而object會被轉換為Map對象远豺。在進行復雜對象處理的時候要留意這些返回值。
參考資料:
1.http://www.groovy-lang.org/json.html
2.Groovy 處理JSON