前面我們學到如何以 jq filter 取得 JSON 物件裡的屬性,今天來討論幾個練習小技巧吧!
徒弟:師傅,為什麼在我的命令提示字元裡,每次執行 curl 都會看到 "% Total" 這樣的資訊?有辦法不顯示這個嗎?
師傅:哈哈,你終於開始關注細節了!這就像廚師開始注意調味一樣,是個好現象。
徒弟:謝謝師傅。那麼,這個 "% Total" 是什麼意思呢?
師傅:這是 curl 在告訴你下載進度,就像跑馬拉松時的里程標記。但有時候,我們不需要知道每一步,只想要最後的結果。
徒弟:原來如此。那麼,有辦法讓 curl 不顯示這些資訊嗎?
師傅:當然有!你可以使用 -s 或 --silent 選項。就像忍者一樣,悄無聲息地完成任務。
徒弟:哦,那麼命令應該是這樣嗎:curl -s https://jsonplaceholder.typicode.com/todos/1
?
師傅:沒錯!你學得真快,像閃電一樣。現在你的 curl 命令就會安安靜靜了。
徒弟:謝謝師傅!不過,我還有一個問題......我們一直用 curl 從網上提取資料,這樣會不會佔用太多別人的網路資源呢?有沒有什麼方法可以存取本地的 JSON 呢?
師傅:哈!終於開始為他人著想了!不錯,這個問題問得好,像顆閃亮的珍珠。
徒弟:謝謝師傅。那麼,有什麼解決方法嗎?
師傅:當然有!我們可以把 JSON 存在本地文件裡,就像把珍寶藏在自己家裡。
徒弟:哦,那要怎麼做呢?
師傅:很簡單。首先,我們用 curl 把資料存到文件裡:curl https://jsonplaceholder.typicode.com/todos/1 > todo.json
徒弟:這樣就把資料存到了 todo.json 文件裡?
師傅:沒錯!然後我們就可以用 jq 直接處理這個文件了:jq "." todo.json
徒弟:哇,這樣就不用每次都從網上抓資料了!
師傅:對,你終於開竅了!這樣既省資源,又能快速操作,簡直是一舉兩得。
徒弟:太棒了!那我可以用這種方法來練習各種 jq 操作嗎?
師傅:當然可以!你現在就像一隻學會飛翔的小鳥,可以自由探索 JSON 的世界了
curl 命令中的 -s
選項(或 --silent
)的作用是讓 curl 在執行時不顯示進度條或錯誤訊息。這對於編寫腳本或在需要乾淨的輸出的情況下特別有用。它就像是讓 curl 悄悄地完成任務,不發出任何聲響。
如果不想看到進度顯示,卻不想錯過錯誤訊息,可以參考以下指令:
curl --show-error --silent https://example.com
>
輸出文件另外,使用 >
符號,能將輸出重定向到文件。這個符號告訴系統將命令的輸出不是顯示在畫面上,而是寫入到指定的文件中。例如,curl https://jsonplaceholder.typicode.com/todos/1 > todo.json
會將 TODO 的內容保存到 todo.json 文件中,而不是直接顯示在命定提示字元畫面上。
前面的練習都是透過 curl 取得 json 檔案,如:
curl https://jsonplaceholder.typicode.com/todos/1 | jq ".title"
在當我們將json儲存到本地端的檔案中之後,也一樣可以使用 jq filter,做法非常類似。使用 jq "filter" 檔案的基本語法是 jq "filter" file.json
。這裡的 "filter" 和昨天介紹的相同的 jq 表達式,可用於選擇、轉換或操作 JSON 資料。
例如以下指令,會從 todo.json 文件中提取 "title" 屬性的值。
jq ".title" todo.json
實際練習結果可參考下圖:
我第一次接觸 jq 的時候,是看到 curl + jq 的組合。隨著練習的次數增加,也看到了可以操作 json 檔案的做法,這種做法對於練習而言會是更好的體驗,更放心的練習 jq。 感謝今天認真練習的自己,期待明天的學習~ ✨😁