




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第go語言搬磚之gojmespath實現查詢json數據目錄簡介例子小結
簡介
go-jmespath是用Go語言實現jmespath的一個庫,jmespath是json的查詢語言,所以在Go中利用go-jmespath可以做到查詢json的作用
go-jmespath官網:/jmespath/go-jmespath
jmespath官網:/
jmespath學習:/tutorial.html
go-jmespath和linux系統jq命令功能非常相似,讓Go處理json數據更加方便
例子
以下例子來源來go-jmespath官方文檔和jmespath官網的學習文檔總結
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查詢結果:",re1)
re2,_:=jmespath.Search("foo.bar.baz[2]",data)
fmt.Println("data查詢結果:",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查詢結果:",re3)
re4,_:=jmespath.Search("foo[:1].first",data2)
fmt.Println("data2查詢結果:",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查詢結果:",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查詢結果:",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查詢結果:",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查詢結果:",re8)
//函數
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查詢結果:",re9)
re10,_:=jmespath.Search("max_by(people,age).name",data7)
fmt.Println("data7查詢結果:",re10)
小結
上述例子演示了7種不同方式的查詢,基本能覆蓋日常json查詢的需求了
go-jmespath包完全模擬了jmespath
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康中國戰略下的智慧醫院設計與建設
- 企業類贈與合同范例
- 付協調費合同范例
- 橙青色扁平風牙齒健康模板
- 書采編合同范例
- 會議宣傳合同范例
- 溫州市普通高中2025屆高三第三次適應性考試英語試題及答案
- 區塊鏈技術在供應鏈管理中的未來發展預測
- 醫技升級新篇章-基于大數據的醫療培訓與模擬應用研究
- 會議設備維護合同范例
- 2024年黑龍江省哈爾濱市中考英語試題卷(含答案及解析)
- 2024-2030年全球及中國女性私密護理行業市場現狀供需分析及市場深度研究發展前景及規劃可行性分析研究報告
- 10以內加減法練習題1000題-直接打印版
- 教育部《中小學德育工作指南》-道德修養手冊
- RAG技術:人工智能的新篇章
- JGT163-2013鋼筋機械連接用套筒
- 2024年7月浙江省高中學業水平考試數學試卷真題(含答案詳解)
- DL∕T 782-2001 110kV及以上送變電工程啟動及竣工驗收規程
- 用友大易-2022雇主品牌白皮書
- JJF(通信) 068-2023 雷達回波模擬器校準規范(報批稿)
- 《公路橋梁施工監控技術規程》(JTGT3650-01-2022)
評論
0/150
提交評論