



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第go語言搬磚之gojmespath實現(xiàn)查詢json數(shù)據(jù)目錄簡介例子小結(jié)
簡介
go-jmespath是用Go語言實現(xiàn)jmespath的一個庫,jmespath是json的查詢語言,所以在Go中利用go-jmespath可以做到查詢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ù)更加方便
例子
以下例子來源來go-jmespath官方文檔和jmespath官網(wǎng)的學(xué)習(xí)文檔總結(jié)
packagemain
import(
"encoding/json"
"fmt"
"/jmespath/go-jmespath"
funcmain(){
//基本查詢
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查詢結(jié)果:",re1)
re2,_:=jmespath.Search("foo.bar.baz[2]",data)
fmt.Println("data查詢結(jié)果:",re2)
//通配符查詢
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查詢結(jié)果:",re3)
re4,_:=jmespath.Search("foo[:1].first",data2)
fmt.Println("data2查詢結(jié)果:",re4)
//運算符查詢
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查詢結(jié)果:",re5)
//過濾查詢
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查詢結(jié)果:",re6)
//管道查詢
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查詢結(jié)果:",re7)
//多選查詢并帶自定義名稱
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查詢結(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查詢結(jié)果:",re9)
re10,_:=jmespath.Search("max_by(people,age).name",data7)
fmt.Println("data7查詢結(jié)果:",re10)
小結(jié)
上述例子演示了7種不同方式的查詢,基本能覆蓋日常json查詢的需求了
go-jmespath包完全模擬了jmespath
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電廠燃料安全培訓(xùn)體系構(gòu)建
- 《互聯(lián)網(wǎng)域名管理與策略》課件
- 2024年廣東珠海中考地理試題及答案
- 【小學(xué)】健康教育課件 - 守護眼睛
- 《血液透析的臨床應(yīng)用》課件
- 2025年護理頂崗實習(xí)心得體會模版
- 2025深圳出租房屋合同樣本
- 2023年湖南懷化通道縣一年級下學(xué)期八單元測試語文試卷及答案
- 《高效能管理實務(wù)》課件
- 2025寫字樓租賃合同模板下載
- 自動噴水滅火系統(tǒng)PPT(完整版)
- 2022年湖北省黃岡市黃州區(qū)思源實驗學(xué)校八年級上學(xué)期期中生物試卷(含答案)
- 盈虧問題 完整版課件
- 北師大版小學(xué)四年級數(shù)學(xué)下冊《優(yōu)化》教學(xué)設(shè)計
- 班級管理(第3版)教學(xué)課件匯總?cè)纂娮咏贪?完整版)
- 兩級全差動運算放大器的設(shè)計
- 防食物中毒和預(yù)防的主題班會
- 《中醫(yī)護理學(xué)》第三章課件
- 泵站畢業(yè)設(shè)計
- 行政事業(yè)單位合同業(yè)務(wù)控制流程圖
- 板房區(qū)臨建設(shè)施技術(shù)標(biāo)
評論
0/150
提交評論