The Issue of the Day Before

使用 jq 分析 JSON

linux -

echo "[1,2,3]" | jq .

Why

有時候面對一團 JSON 卻不想寫程式,這時候就能拿 jq 出來用。

What

JSON

JSON (JavaScript Object Notation)是一種輕量級的數據交換格式。

jq

jq 一個輕量級且靈活的命令行 JSON 處理器。

What

Install

sudo apt install jq

format

JSON 排列的更整齊

input:
echo '{ "name": "a", "value": "b", "desc": "c" }' | jq .

output:
{
  "name": "a",
  "value": "b",
  "desc": "c"
}

pick

挑出陣列中每個物件中鍵值為 namevalue 的值

input: [{ "name": "a", "value": "b", "desc": "c" }, { "name": "d", "value": "e", "desc": "f" }]

jq '.[] | {"name", "value"}'

output: { "name": "a", "value": "b" } {"name": "d", "value": "e" }

要讓輸出更像 JSON 你可以用 [] 將他包起來。

input: [{ "name": "a", "value": "b", "desc": "c" }, { "name": "d", "value": "e", "desc": "f" }]

`jq '[.[] | {"name", "value"}]'`

output: [{ "name": "a", "value": "b" },{"name": "d", "value": "e" }]

filters

過濾出符合條件的項目

input:	[{"id": 1, "val": 1}, {"id": 2, "val": 2}]

jq '.[] | select(.id == 1)'

output:	{ "id": 1, "val": 1 }

array 長度

input:	[{"id": 1, "val": 1}, {"id": 2, "val": 2}]

jq '. | length'

output: 2

還有更多技巧,但這應該已經夠用了。

閱讀在雲端