您好,登錄后才能下訂單哦!
本篇內容主要講解“Go語言json解析框架與gjson怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Go語言json解析框架與gjson怎么使用”吧!
快速安裝:
go get github.com/tidwall/gjson
Get() 方法解析 json 字符串:
json := `{"name":{"first":"uncle","last":"suta"}}` lastName := gjson.Get(json, "name.last") fmt.Println(lastName.String()) // "uncle"
通過上面的例子,我們可以看到,使用 gjson 中的 Get() 方法,我們可以輕松愉快的進行 json 解析。
Get() 方法在解析完 json 字符串后,返回的是一個 Result 結構體,其結構如下所示:
// Result represents a json value that is returned from Get(). type Result struct { // Type is the json type Type Type // Raw is the raw json Raw string // Str is the json string Str string // Num is the json number Num float64 // Index of raw value in original json, zero means index unknown Index int // Indexes of all the elements that match on a path containing the '#' // query character. Indexes []int }
但是,我們解析 json 所需要的往往是基本數(shù)據(jù)類型,因此,Result 結構體本身為我們實現(xiàn)了如下所示的豐富的方法來進行類型轉化:
String() string Bool() bool Int() int64 Uint() uint64 Float() float64 Time() time.Time Array() []Result IsObject() bool IsArray() bool ForEach(iterator func(key Result, value Result) bool) Map() map[string]Result Get(path string) Result arrayOrMap(vc byte, valueize bool) (r arrayOrMapResult) Exists() bool Value() interface{} Less(token Result, caseSensitive bool) bool Paths(json string) []string Path(json string) string
在 gjson
中,鍵路徑實際上是以.
分隔的一系列鍵。
gjson
支持在鍵中包含通配符*
和?
,*
匹配任意多個字符,?
匹配單個字符。 例如abc*
可以匹配abc1111/abc222/abc...
等以abc
開頭的鍵,ab?
只能匹配ab1/ab2
等以ab
開頭且后面只有一個字符的鍵。
數(shù)組使用鍵名 + .
+ 索引(索引從 0 開始)的方式讀取元素,如果鍵a
對應的值是一個數(shù)組,那么a.0
讀取數(shù)組的第一個元素,a.1
讀取第二個元素。
數(shù)組長度使用鍵名 + .
+ #
獲取,例如a.#
返回數(shù)組a
的長度。
如果鍵名中出現(xiàn).
,那么需要使用\
進行轉義。
gjson
還提供了通用的遍歷數(shù)組和對象的方式。gjson.Get()
方法返回一個gjson.Result
類型的對象,json.Result
提供了ForEach()
方法用于遍歷。該方法接受一個類型為func (key, value gjson.Result) bool
的回調函數(shù)。遍歷對象時key
和value
分別為對象的鍵和值;遍歷數(shù)組時,value
為數(shù)組元素,key
為空(不是索引)?;卣{返回false
時,遍歷停止:
json := `{"list": ["a", "b", "c"]}` list := gjson.Get(json, "list") list.ForEach(func(_, element gjson.Result) bool { fmt.Println(element) return true })
gjson.Valid()
可以對 json 字符串的合法性進行校驗。
gjson.GetMany()
可以一次解析多個字段。
到此,相信大家對“Go語言json解析框架與gjson怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。