




下載本文檔
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康中國(guó)戰(zhàn)略下的智慧醫(yī)院設(shè)計(jì)與建設(shè)
- 企業(yè)類(lèi)贈(zèng)與合同范例
- 付協(xié)調(diào)費(fèi)合同范例
- 橙青色扁平風(fēng)牙齒健康模板
- 書(shū)采編合同范例
- 會(huì)議宣傳合同范例
- 溫州市普通高中2025屆高三第三次適應(yīng)性考試英語(yǔ)試題及答案
- 區(qū)塊鏈技術(shù)在供應(yīng)鏈管理中的未來(lái)發(fā)展預(yù)測(cè)
- 醫(yī)技升級(jí)新篇章-基于大數(shù)據(jù)的醫(yī)療培訓(xùn)與模擬應(yīng)用研究
- 會(huì)議設(shè)備維護(hù)合同范例
- 10以?xún)?nèi)加減法練習(xí)題1000題-直接打印版
- 教育部《中小學(xué)德育工作指南》-道德修養(yǎng)手冊(cè)
- RAG技術(shù):人工智能的新篇章
- JGT163-2013鋼筋機(jī)械連接用套筒
- 2024年7月浙江省高中學(xué)業(yè)水平考試數(shù)學(xué)試卷真題(含答案詳解)
- DL∕T 782-2001 110kV及以上送變電工程啟動(dòng)及竣工驗(yàn)收規(guī)程
- 用友大易-2022雇主品牌白皮書(shū)
- JJF(通信) 068-2023 雷達(dá)回波模擬器校準(zhǔn)規(guī)范(報(bào)批稿)
- 《公路橋梁施工監(jiān)控技術(shù)規(guī)程》(JTGT3650-01-2022)
- 上交所金橋數(shù)據(jù)中心用戶(hù)手冊(cè)
- 胸腔積液考試試題
評(píng)論
0/150
提交評(píng)論