首頁 > 軟體

Go語言JSON解析器gjson使用方法詳解

2022-12-07 14:00:31

gjson

GJSON 是一個Go包,它提供了一種從json檔案中獲取值的快速簡單的方法。它具有單行檢索、點符號路徑、迭代和解析 json 行等功能。

還可以檢視SJSON以修改 json,以及JJ命令列工具。

本讀我檔案是如何使用 GJSON 的快速概述,有關更多資訊,請檢視GJSON 語法。

github 的地址在這裡

安裝

安裝gjson,使用的是go傳統的安裝方法:

go install github.com/tidwall/gjson@latest

在檔案的目錄下執行:

$ go get -u github.com/tidwall/gjson

這樣就在目錄下,可以使用gjson了。

使用

獲取相應的數值。

獲取指定路徑的搜尋 json。路徑採用點語法,例如“name.last”或“age”。當找到該值時,它會立即返回。

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

這個跟我們使用的傳統的json解析還有一點區別,gjson不僅幫我們解析了json的資料,還幫我們建立了快速查詢的通道。

路徑語法

路徑是由點分隔的一系列鍵。金鑰可能包含特殊的萬用字元“*”和“?”。要存取陣列值,請使用索引作為鍵。要獲取陣列中的元素數量或存取子路徑,請使用“#”字元。點和萬用字元可以用“”跳脫。

{
  "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"

您還可以使用 查詢陣列中的第一個匹配項#(…),或使用 查詢所有匹配項#(…)#。查詢支援==, !=, <, <=, >,>= 比較運運算元和簡單的模式匹配%(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"]

這樣我們查詢起來就非常方便了。

到此這篇關於Go語言JSON解析器gjson使用方法詳解的文章就介紹到這了,更多相關Go JSON解析器gjson內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com