「Groovy」- 處理 Object 與 JSON String 之間的轉換 @20210129


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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM