Go語言JSON解析器gjson使用方法詳解
gjson
GJSON
是一個Go
包,它提供了一種從json
文檔中獲取值的快速簡單的方法。它具有單行檢索、點符號路徑、迭代和解析 json 行等功能。
還可以查看SJSON
以修改 json
,以及JJ
命令行工具。
本自述文件是如何使用 GJSON
的快速概述,有關(guān)更多信息,請查看GJSON
語法。
github 的地址在這里。
安裝
安裝gjson
,使用的是go
傳統(tǒng)的安裝方法:
go install github.com/tidwall/gjson@latest
在文件的目錄下執(zhí)行:
$ go get -u github.com/tidwall/gjson
這樣就在目錄下,可以使用gjson
了。
使用
獲取相應(yīng)的數(shù)值。
獲取指定路徑的搜索 json
。路徑采用點語法,例如“name.last”或“age”。當(dāng)找到該值時,它會立即返回。
package main import "github.com/tidwall/gjson" const json = `{"name":{"first":"Janet","last":"Prichard"},"age":47}` func main() { value := gjson.Get(json, "name.last") println(value.String()) }
這將打印:
Prichard
這個跟我們使用的傳統(tǒng)的json
解析還有一點區(qū)別,gjson
不僅幫我們解析了json
的數(shù)據(jù),還幫我們建立了快速查找的通道。
路徑語法
路徑是由點分隔的一系列鍵。密鑰可能包含特殊的通配符“*”和“?”。要訪問數(shù)組值,請使用索引作為鍵。要獲取數(shù)組中的元素數(shù)量或訪問子路徑,請使用“#”字符。點和通配符可以用“\”轉(zhuǎn)義。
{ "name": {"first": "Tom", "last": "Anderson"}, "age":37, "children": ["Sara","Alex","Jack"], "fav.movie": "Deer Hunter", "friends": [ {"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]}, {"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]}, {"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]} ] }
"name.last" >> "Anderson"
"age" >> 37
"children" >> ["Sara","Alex","Jack"]
"children.#" >> 3
"children.1" >> "Alex"
"child*.2" >> "Jack"
"c?ildren.0" >> "Sara"
"fav\.movie" >> "Deer Hunter"
"friends.#.first" >> ["Dale","Roger","Jane"]
"friends.1.last" >> "Craig"
您還可以使用 查詢數(shù)組中的第一個匹配項#(…),或使用 查找所有匹配項#(…)#。查詢支持==, !=, <, <=, >,>= 比較運算符和簡單的模式匹配%(like) 和!% (not like) 運算符。
friends.#(last=="Murphy").first >> "Dale"
friends.#(last=="Murphy")#.first >> ["Dale","Jane"]
friends.#(age>45)#.last >> ["Craig","Murphy"]
friends.#(first%"D*").last >> "Murphy"
friends.#(first!%"D*").last >> "Craig"
friends.#(nets.#(=="fb"))#.first >> ["Dale","Roger"]
這樣我們查找起來就非常方便了。
到此這篇關(guān)于Go語言JSON解析器gjson使用方法詳解的文章就介紹到這了,更多相關(guān)Go JSON解析器gjson內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Go實現(xiàn)一個簡易DAG服務(wù)的示例代碼
DAG的全稱是Directed Acyclic Graph,即有向無環(huán)圖,DAG廣泛應(yīng)用于表示具有方向性依賴關(guān)系的數(shù)據(jù),如任務(wù)調(diào)度、數(shù)據(jù)處理流程、項目管理以及許多其他領(lǐng)域,下面,我將用Go語言示范如何實現(xiàn)一個簡單的DAG服務(wù),需要的朋友可以參考下2024-03-03Golang實現(xiàn)程序優(yōu)雅退出的方法詳解
項目開發(fā)過程中,隨著需求的迭代,代碼的發(fā)布會頻繁進行,在發(fā)布過程中,Golang如何讓程序做到優(yōu)雅的退出?本文就來詳細為大家講講2022-06-06Go語言之io.ReadAtLeast函數(shù)的基本使用和原理解析
io.ReadAtLeast函數(shù)是Go語言標(biāo)準(zhǔn)庫提供的一個工具函數(shù),能夠從數(shù)據(jù)源讀取至少指定數(shù)量的字節(jié)數(shù)據(jù)到緩沖區(qū)中,這篇文章主要介紹了io.ReadAtLeast函數(shù)的相關(guān)知識,需要的朋友可以參考下2023-07-07Golang算法問題之?dāng)?shù)組按指定規(guī)則排序的方法分析
這篇文章主要介紹了Golang算法問題之?dāng)?shù)組按指定規(guī)則排序的方法,結(jié)合實例形式分析了Go語言數(shù)組排序相關(guān)算法原理與操作技巧,需要的朋友可以參考下2017-02-02一文詳解Golang協(xié)程調(diào)度器scheduler
這篇文章主要介紹了一文詳解Golang協(xié)程調(diào)度器scheduler,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-07-07