優雅的查看json文件


前面

jq是一個輕量級但是賊靈活的命令行json處理器.jq在json數據處理中很有用就像用awk處理文本一樣。jq最簡單的應用應該是解析json文件格式化輸出數據吧。有些網站如:json.cn 就是用來在線解析json以一個友好的格式返回給用戶查看。解析網站對於簡單的json數據使用較為良好,不過對於比較的大的文件就不行了。畢竟你打要開json文件,然后復制到網站上,如果文件太大,還可能卡頓一下。不過jq很強大,你可以設置各種命令,返回你想要的結果。本文簡單講解下jq比較常用的操作。

安裝

jq支持Linux,OS X,Windows等系統。Debian和Ubuntu安裝用sudo apt-get install jq就行了。其它的系統安裝可以去查看:https://stedolan.github.io/jq/download/

基本使用

jq '.'

這里我用的系統是Ubuntu 16。現在這有一個json文件,但是里面的格式不規范。我們需要查看里面的內容:
像cxk?
使用jq之后就不一樣了,'.'表示當前輸入的內容:
wyf

jq '.foo[:1]' / 索引切片

可以看出jq支持管道,也可以直接用文件,命令:jq '.' type73.json , 可以通過'.key'來獲取這個key的內容,如果key 的值是數組,可以用索引值來指定某個值,也支持切片操作。如:

jq '.foo, .bar | .[1]' /多個過濾,管道操作

使用 ','可以同時利用多個表達式過濾,支持管道操作,jq '.A | .B':以前一個的輸出作為后一個的輸入。如:

jq '[.foo[1], .bar[1]]' 構建新數組

利用 []可以將不同key下的值構建一個新的輸出

jq '{new_f: .foo, new_b: .bar}' 構建新對象

jq '[.foo[1], .bar[1]]' > filter.json 將過濾后的數據保存

利用 > 將數據轉到新的文件里:

內置的操作和函數

jq內置有一些運算操作符支持加減乘除等,和一些內置函數,使之更靈活和強大。

加減乘除

注意加減乘除的需要類型一樣,同樣是數組,或者標量,或者對象:

map / map_values

可以用map對每個數組的元素進行操作,map_values用於對象的values操作:

刪除某個元素

可以通過key,刪除,也可以指定索引值刪除: jq '.one.sn | del(.[1])' type73.json, 程序運行后是返回的刪除后的內容

挑選指定條件內容

select(boolean_expression) 通過布爾表達式挑選指定內容

注意事項

jq不能正確解析,key 值為 數字字符串的內容。比如: {“1”: 123, “2”: “abc”},jq '.2' file.json 就不能正確的解析。

最后

jq還有許多內置函數, 還支持if,else條件語句,能作比較,支持一些數學運算,正則表達式等等。總之很實用也強大,這里寫不完。更多的可以去官網查看。很詳細的!


參考

https://stedolan.github.io/jq/manual/#ConditionalsandComparisons


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM