Object 轉為 JSON String
如下代碼,可以將對象(List、Map)轉化為 Json String:
import groovy.json.JsonOutput println JsonOutput.toJson(dataObject)
但是,如果數據中包含 Unicode 字符,則 toJson() 將對其進行轉義。如下示例以及解決方法:
import groovy.json.JsonOutput import groovy.json.JsonGenerator.Options def mapWithUnicode = [key : "好"] println JsonOutput.toJson(mapWithUnicode) // {"key":"\u597d"} println new Options().disableUnicodeEscaping().build().toJson(mapWithUnicode) // {"key":"好"}
但是,JsonGenerator.Options 無法在 Groovy 2.4.x 中使用,會提示 unable to resolve class groovy.json.JsonGenerator.Options 錯誤。因為 Jenkins Pipeline 中使用的 Groovy 2.4 版本(09/16/2020 Jenkins 2.241),我們必須解決這個問題。
為了解決上述問題,我們可以求助於第三方類庫,比如 Gson 庫:
@Grab(group='com.google.code.gson', module='gson', version='2.8.2') import com.google.gson.Gson println new Gson().toJson([key : "好"]) // {"key":"好"}
JSON String 轉為 Object
import groovy.json.JsonSlurperClassic return new JsonSlurperClassic().parseText(jsonString)
參考文獻
WikiNotes/處理 Object 與 JSON String 之間的轉換
Parsing and producing JSON
How to parse JSON in Java - Stack Overflow
json - How to use Groovy JsonOutput.toJson with data encoded with UTF-8? - Stack Overflow