Go語(yǔ)言JSON解析器gjson使用方法詳解
gjson
GJSON 是一個(gè)Go包,它提供了一種從json文檔中獲取值的快速簡(jiǎn)單的方法。它具有單行檢索、點(diǎn)符號(hào)路徑、迭代和解析 json 行等功能。
還可以查看SJSON以修改 json,以及JJ命令行工具。
本自述文件是如何使用 GJSON 的快速概述,有關(guān)更多信息,請(qǐng)查看GJSON 語(yǔ)法。
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。路徑采用點(diǎn)語(yǔ)法,例如“name.last”或“age”。當(dāng)找到該值時(shí),它會(huì)立即返回。
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())
}這將打?。?/p>
Prichard
這個(gè)跟我們使用的傳統(tǒng)的json解析還有一點(diǎn)區(qū)別,gjson不僅幫我們解析了json的數(shù)據(jù),還幫我們建立了快速查找的通道。
路徑語(yǔ)法
路徑是由點(diǎn)分隔的一系列鍵。密鑰可能包含特殊的通配符“*”和“?”。要訪問(wèn)數(shù)組值,請(qǐng)使用索引作為鍵。要獲取數(shù)組中的元素?cái)?shù)量或訪問(wèn)子路徑,請(qǐng)使用“#”字符。點(diǎn)和通配符可以用“\”轉(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ù)組中的第一個(gè)匹配項(xiàng)#(…),或使用 查找所有匹配項(xiàng)#(…)#。查詢支持==, !=, <, <=, >,>= 比較運(yùn)算符和簡(jiǎn)單的模式匹配%(like) 和!% (not like) 運(yùn)算符。
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"]
這樣我們查找起來(lái)就非常方便了。
到此這篇關(guān)于Go語(yǔ)言JSON解析器gjson使用方法詳解的文章就介紹到這了,更多相關(guān)Go JSON解析器gjson內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Go與Rust高性能解析JSON實(shí)現(xiàn)方法示例
- golang解析json數(shù)據(jù)的4種方法總結(jié)
- Golang解析JSON遇到的坑及解決方法
- Go語(yǔ)言學(xué)習(xí)之JSON編碼解析與使用
- Go語(yǔ)言實(shí)現(xiàn)JSON解析的神器詳解
- 一文帶你了解Go語(yǔ)言如何解析JSON
- Golang實(shí)現(xiàn)解析JSON的三種方法總結(jié)
- golang生成JSON以及解析JSON
- Go?語(yǔ)言?json解析框架與?gjson?詳解
- go語(yǔ)言用八百行代碼實(shí)現(xiàn)一個(gè)JSON解析器
- Go語(yǔ)言實(shí)現(xiàn)JSON解析的方法詳解
- GO中Json解析的幾種方式
相關(guān)文章
在golang中使用Sync.WaitGroup解決等待的問(wèn)題
這篇文章主要介紹了在golang中使用Sync.WaitGroup解決等待的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
Go語(yǔ)言實(shí)現(xiàn)單端口轉(zhuǎn)發(fā)到多個(gè)端口
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言實(shí)現(xiàn)單端口轉(zhuǎn)發(fā)到多個(gè)端口,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的小伙伴可以了解下2024-02-02
Go語(yǔ)言實(shí)現(xiàn)AzDG可逆加密算法實(shí)例
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)AzDG可逆加密算法,實(shí)例分析了AzDG可逆加密算法的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02
Golang中函數(shù)(Function)和方法(Method)的區(qū)別詳解
在Golang中,大家必然會(huì)頻繁使用到函數(shù)(Function)和方法(Method),但是有的同學(xué)可能并沒(méi)有注意過(guò)函數(shù)和方法的異同點(diǎn),函數(shù)和方法都是用來(lái)執(zhí)行特定任務(wù)的代碼塊,雖然很相似,但也有很大的區(qū)別,所以本文將詳細(xì)講解函數(shù)和方法的定義以及它們的異同點(diǎn)2023-07-07
一文理解Goland協(xié)程調(diào)度器scheduler的實(shí)現(xiàn)
本文主要介紹了Goland協(xié)程調(diào)度器scheduler的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
Go習(xí)慣用法(多值賦值短變量聲明賦值簡(jiǎn)寫(xiě)模式)基礎(chǔ)實(shí)例
本文為大家介紹了Go習(xí)慣用法(多值賦值,短變量聲明和賦值,簡(jiǎn)寫(xiě)模式、多值返回函數(shù)、comma,ok 表達(dá)式、傳值規(guī)則)的基礎(chǔ)實(shí)例,幫大家鞏固扎實(shí)Go語(yǔ)言基礎(chǔ)2024-01-01
Go語(yǔ)言入門教程之基礎(chǔ)語(yǔ)法快速入門
這篇文章主要介紹了Go語(yǔ)言入門教程之基礎(chǔ)語(yǔ)法快速入門,本文講解了值類型、變量、常量、循環(huán)、條件語(yǔ)句、條件枚舉等內(nèi)容,需要的朋友可以參考下2014-11-11

