超級好用的輕量級JSON處理命令jq
1 簡介
jq是一個輕量級的命令列工具,讓你可以非常方便地處理JSON資料,如切分、過濾、對映、轉化等,就像sed、awk、grep文字處理三劍客一樣。jq是用C寫的,沒有執行時依賴,你可以直接下載可執行檔案就可以使用了。
2 下載安裝
官網 提供了可執行檔案,可以直接下載使用,當然也可以通過原始碼編譯。
我是直接下載的,然後給可執行許可權:
$ chmod +x jq-osx-amd64
更名為jq:
$ mv jq-osx-amd64 jq
再加入PATH即可。
$ jq --version jq-1.6
3 如何使用
官方提供了 線上版本 ,可以直接使用,還給出了很多常用的例子,簡直不要太方便:
3.1 一些簡單的例子
過濾:獲取全部內容:
$ echo '{"name":"Larry Deng"}' | jq . { "name": "Larry Deng" }
過濾:獲取特定key值:
$ echo '{"name":"Larry Deng"}' | jq .name "Larry Deng"
計算長度:
$ echo '{"name":"Larry Deng","age":18}' | jq '.name | length'
數學計算(求立方):
$ echo '[1,2,3]' | jq 'map(.*.*.)' [ 1, 8, 27 ]
擷取陣列部分(使用管道):
$ echo '[1,2,3]' | jq '.[0:2] | map(.*.*.)' [ 1, 8 ]
讀取key值:
$ echo '{"abc": 1, "abcd": 2, "Foo": 3}' | jq keys [ "Foo", "abc", "abcd" ]
3.2 處理檔案
除了可以通過管道來處理文字,也可以直接處理檔案。把下面內容儲存為jq.json:
{ "info": [ {"name":"Larry Deng","age":"18","webSite":"www.pkslow.com"}, {"name":"Larry","age":"01","webSite":"pkslow.com"}, {"name":"LarryDpk","age":"20","webSite":"https://www.pkslow.com"} ], "version":"1.0.3" }
處理如下:
$ jq .version jq.json "1.0.3" $ jq .info[0] jq.json { "name": "Larry Deng", "age": "18", "webSite": "www.pkslow.com" } $ jq '.info |.[].name ' jq.json "Larry Deng" "Larry" "LarryDpk" $ jq '.info |.[].webSite ' jq.json "www.pkslow.com" "pkslow.com" "https://www.pkslow.com"
4 總結
jq真的很好用,特別是在我們通過curl獲取json結果時。
更多使用請參考手冊: https://stedolan.github.io/jq/manual/
「其他文章」
- 記一次批量更新整型型別的列 → 探究 UPDATE 的使用細節
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 執行緒池底層原理詳解與原始碼分析
- 30分鐘掌握 Webpack
- 線性迴歸大結局(嶺(Ridge)、 Lasso迴歸原理、公式推導),你想要的這裡都有
- Django 之路由層
- 【前端必會】webpack loader 到底是什麼
- day42-反射01
- 中心化決議管理——雲端分析
- HashMap底層原理及jdk1.8原始碼解讀
- 詳解JS中 call 方法的實現
- 列印 Logger 日誌時,需不需要再封裝一下工具類?
- 初識設計模式 - 代理模式
- 設計模式---享元模式
- 密碼學奇妙之旅、01 CFB密文反饋模式、AES標準、Golang程式碼
- [ML從入門到入門] 支援向量機:從SVM的推導過程到SMO的收斂性討論
- 從應用訪問Pod元資料-DownwardApi的應用
- Springboot之 Mybatis 多資料來源實現
- Java 泛型程式設計
- CAS核心思想、底層實現