由於近期要處理一些 JSON 數據格式。一大早經過一番搜索后,終於找到了 jq 這個非常棒的工具。jq 同意你直接在命令行下對 JSON 進行操作,包含分片、過濾、轉換等等。
首先在mac下安裝jq。使用brew install jq就能夠了,前提是安裝了homebrew。假設在linux ubuntu下。應該能夠使用sudo apt-get install jq安裝。
讓我們通過幾個樣例來說明 jq 的功能:
一、輸出格式化,美麗的打印效果
假設我們用文本編輯器打開 JSON,有時候可能看起來會一團糟,可是通過 jq 的 .(點)過濾器就能夠立刻讓 JSON 的格式規整起來。
1.用文本編輯器打開后的樣子
2.用 jq 顯示的結果,以后在終端下看json舒服了!
$ jq . package.json
{
"scripts": {
"test": "grunt test"
},
"engines": {
"node": ">=0.10.0"
},
"devDependencies": {
"karma-ng-html2js-preprocessor": "^0.1.0",
"karma": "^0.12.19",
"grunt-karma": "^0.8.3",
"karma-ng-scenario": "^0.1.0",
"time-grunt": "~0.2.1",
"load-grunt-tasks": "~0.4.0",
"jshint-stylish": "~0.1.3",
"grunt-usemin": "~2.0.0",
"grunt-svgmin": "~0.2.0",
"grunt-rev": "~0.1.0",
"grunt-ngmin": "~0.0.2",
"grunt-newer": "~0.6.1",
"grunt-contrib-connect": "~0.5.0",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-compass": "~0.7.2",
"grunt-contrib-clean": "~0.5.0",
"grunt-concurrent": "~0.5.0",
"grunt-bower-install": "~1.0.0",
"grunt-autoprefixer": "~0.4.0",
"grunt": "~0.4.1",
"grunt-contrib-copy": "~0.4.1",
"grunt-contrib-cssmin": "~0.7.0",
"grunt-contrib-htmlmin": "~0.1.3",
"grunt-contrib-imagemin": "~0.3.0",
"grunt-contrib-jshint": "~0.7.1",
"grunt-contrib-uglify": "~0.2.0",
"grunt-contrib-watch": "~0.5.2",
"grunt-google-cdn": "~0.2.0"
},
"dependencies": {},
"version": "0.0.0",
"name": "myyo"
}
二、高速查詢JSON數據
利用 jq 可以以 key 作為keyword來對 JSON 作出高速查詢, 比如:
$ jq .version package.json "0.0.0"
jq 的鍵查詢也支持鏈式調用,如:
$ jq .scripts.test package.json "grunt test"
三、jq的管道操作
熟悉命令行的朋友可能都知道 | (管道)是一個很強大的 武器。幸運的是,jq 也提供了對管道的支持。
$ jq '.devDependencies|{ karma }' package.json
{
"karma": "^0.12.19"
}
在這里,我們使用管道過濾並構造出karma對象
假設你須要在命令行下處理 JSON,我強烈推薦 jq。jq 不僅 可以滿足一般性的常見需求,更包括運算、內置函數、條件比較、 變量聲明、自定函數等強大功能。很多其它內容可以通過 jq 的官方手冊進行學習。
