日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Go语言json解析框架与gjson怎么使用

發布時間:2023/12/19 综合教程 21 生活家
生活随笔 收集整理的這篇文章主要介紹了 Go语言json解析框架与gjson怎么使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇內容主要講解“Go語言json解析框架與gjson怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Go語言json解析框架與gjson怎么使用”吧!

1. 快速使用

快速安裝:

gogetgithub.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 解析。

2. Get() 返回的 Result 結構體

Get() 方法在解析完 json 字符串后,返回的是一個 Result 結構體,其結構如下所示:

//ResultrepresentsajsonvaluethatisreturnedfromGet().
typeResultstruct{
//Typeisthejsontype
TypeType
//Rawistherawjson
Rawstring
//Stristhejsonstring
Strstring
//Numisthejsonnumber
Numfloat64
//Indexofrawvalueinoriginaljson,zeromeansindexunknown
Indexint
//Indexesofalltheelementsthatmatchonapathcontainingthe'#'
//querycharacter.
Indexes[]int
}

但是,我們解析 json 所需要的往往是基本數據類型,因此,Result 結構體本身為我們實現了如下所示的豐富的方法來進行類型轉化:

String()string
Bool()bool
Int()int64
Uint()uint64
Float()float64
Time()time.Time
Array()[]Result
IsObject()bool
IsArray()bool
ForEach(iteratorfunc(keyResult,valueResult)bool)
Map()map[string]Result
Get(pathstring)Result
arrayOrMap(vcbyte,valueizebool)(rarrayOrMapResult)
Exists()bool
Value()interface{}
Less(tokenResult,caseSensitivebool)bool
Paths(jsonstring)[]string
Path(jsonstring)string

3. 鍵路徑

gjson中,鍵路徑實際上是以.分隔的一系列鍵。

gjson支持在鍵中包含通配符*?,*匹配任意多個字符,?匹配單個字符。 例如abc*可以匹配abc1111/abc222/abc...等以abc開頭的鍵,ab?只能匹配ab1/ab2等以ab開頭且后面只有一個字符的鍵。

數組使用鍵名 +.+ 索引(索引從 0 開始)的方式讀取元素,如果鍵a對應的值是一個數組,那么a.0讀取數組的第一個元素,a.1讀取第二個元素。

數組長度使用鍵名 +.+#獲取,例如a.#返回數組a的長度。

如果鍵名中出現.,那么需要使用\進行轉義。

4. json 數組遍歷

gjson還提供了通用的遍歷數組和對象的方式。gjson.Get()方法返回一個gjson.Result類型的對象,json.Result提供了ForEach()方法用于遍歷。該方法接受一個類型為func (key, value gjson.Result) bool的回調函數。遍歷對象時keyvalue分別為對象的鍵和值;遍歷數組時,value為數組元素,key為空(不是索引)。回調返回false時,遍歷停止:

json:=`{"list":["a","b","c"]}`
list:=gjson.Get(json,"list")
list.ForEach(func(_,elementgjson.Result)bool{
fmt.Println(element)
returntrue
})

5. 其他

gjson.Valid()可以對 json 字符串的合法性進行校驗。

gjson.GetMany()可以一次解析多個字段。

總結

以上是生活随笔為你收集整理的Go语言json解析框架与gjson怎么使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。