go語(yǔ)言搬磚之gojmespath實(shí)現(xiàn)查詢(xún)json數(shù)據(jù)_第1頁(yè)
go語(yǔ)言搬磚之gojmespath實(shí)現(xiàn)查詢(xún)json數(shù)據(jù)_第2頁(yè)
go語(yǔ)言搬磚之gojmespath實(shí)現(xiàn)查詢(xún)json數(shù)據(jù)_第3頁(yè)
go語(yǔ)言搬磚之gojmespath實(shí)現(xiàn)查詢(xún)json數(shù)據(jù)_第4頁(yè)
go語(yǔ)言搬磚之gojmespath實(shí)現(xiàn)查詢(xún)json數(shù)據(jù)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第go語(yǔ)言搬磚之gojmespath實(shí)現(xiàn)查詢(xún)json數(shù)據(jù)目錄簡(jiǎn)介例子小結(jié)

簡(jiǎn)介

go-jmespath是用Go語(yǔ)言實(shí)現(xiàn)jmespath的一個(gè)庫(kù),jmespath是json的查詢(xún)語(yǔ)言,所以在Go中利用go-jmespath可以做到查詢(xún)json的作用

go-jmespath官網(wǎng):/jmespath/go-jmespath

jmespath官網(wǎng):/

jmespath學(xué)習(xí):/tutorial.html

go-jmespath和linux系統(tǒng)jq命令功能非常相似,讓Go處理json數(shù)據(jù)更加方便

例子

以下例子來(lái)源來(lái)go-jmespath官方文檔和jmespath官網(wǎng)的學(xué)習(xí)文檔總結(jié)

packagemain

import(

"encoding/json"

"fmt"

"/jmespath/go-jmespath"

funcmain(){

//基本查詢(xún)

varjsonData=[]byte(`{"foo":{"bar":{"baz":[0,1,2,3,4]}}}`)

vardatainterface{}

err:=json.Unmarshal(jsonData,data)

iferr!=nil{

fmt.Println(err)

re1,_:=jmespath.Search("foo.bar",data)

fmt.Println("data查詢(xún)結(jié)果:",re1)

re2,_:=jmespath.Search("foo.bar.baz[2]",data)

fmt.Println("data查詢(xún)結(jié)果:",re2)

//通配符查詢(xún)

varjsonData2=[]byte(`{"foo":[{"first":"a","last":"b"},

{"first":"c","last":"d"}]}`)

vardata2interface{}

_=json.Unmarshal(jsonData2,data2)

re3,_:=jmespath.Search("foo[*].first",data2)

fmt.Println("data2查詢(xún)結(jié)果:",re3)

re4,_:=jmespath.Search("foo[:1].first",data2)

fmt.Println("data2查詢(xún)結(jié)果:",re4)

//運(yùn)算符查詢(xún)

varjsonData3=[]byte(`{"foo":[{"age":20},{"age":25},

{"age":30},{"age":35},

{"age":40}]}`)

vardata3interface{}

_=json.Unmarshal(jsonData3,data3)

re5,_:=jmespath.Search("foo[age`30`]",data3)

fmt.Println("data3查詢(xún)結(jié)果:",re5)

//過(guò)濾查詢(xún)

varjsonData4=[]byte(`{

"machines":[

{"name":"a","state":"running"},

{"name":"b","state":"stopped"},

{"name":"b","state":"running"}]

vardata4interface{}

_=json.Unmarshal(jsonData4,data4)

re6,_:=jmespath.Search("machines[state=='running'].name",data4)

fmt.Println("data4查詢(xún)結(jié)果:",re6)

//管道查詢(xún)

varjsonData5=[]byte(`{

"people":[

{"first":"James","last":"d"},

{"first":"Jacob","last":"e"},

{"first":"Jayden","last":"f"},

{"missing":"different"}

"foo":{"bar":"baz"}

vardata5interface{}

_=json.Unmarshal(jsonData5,data5)

re7,_:=jmespath.Search("people[*].first|[0]",data5)

fmt.Println("data5查詢(xún)結(jié)果:",re7)

//多選查詢(xún)并帶自定義名稱(chēng)

varjsonData6=[]byte(`{

"people":[

"name":"a",

"state":{"name":"up"}

"name":"b",

"state":{"name":"down"}

"name":"c",

"state":{"name":"up"}

vardata6interface{}

_=json.Unmarshal(jsonData6,data6)

re8,_:=jmespath.Search("people[].{Name:name,State:}",data6)

fmt.Println("data6查詢(xún)結(jié)果:",re8)

//函數(shù)

varjsonData7=[]byte(`{

"people":[

"name":"b",

"age":30,

"state":{"name":"up"}

"name":"a",

"age":50,

"state":{"name":"down"}

"name":"c",

"age":40,

"state":{"name":"up"}

vardata7interface{}

_=json.Unmarshal(jsonData7,data7)

re9,_:=jmespath.Search("length(people)",data7)

fmt.Println("data7查詢(xún)結(jié)果:",re9)

re10,_:=jmespath.Search("max_by(people,age).name",data7)

fmt.Println("data7查詢(xún)結(jié)果:",re10)

小結(jié)

上述例子演示了7種不同方式的查詢(xún),基本能覆蓋日常json查詢(xún)的需求了

go-jmespath包完全模擬了jmespath

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論