任何人都可以推薦一個Unix(選擇你的味道)JSON解析器,可用於內部管道中的JSON響應的值?Unix命令行JSON解析器?
回答
首先,安裝來自CPAN的JSON模塊:
cpan JSON
然後你可以使用此命令行解析器(其中,如果你喜歡,你可以放入一個bash別名):
perl -MData::Dumper -MJSON=from_json -ne'print Dumper(from_json($_))'
我很困惑這個輸出。輸出包括鍵和值之間的胖箭頭(=>)。這不是JSON。 – 2012-02-18 18:34:04
@landon:不,輸入是JSON,輸出是本地Perl數據結構,如果需要,您可以繼續操作。這個單線的重點在於它產生的數據更容易閱讀。 – Ether 2012-04-19 20:12:46
如果您的堆棧中恰好有node.js和npm,則還有JSON command line processing toolkit。
另一個"json" command用於在Unix命令行上按摩JSON。
這裏是另一個選擇:
- JQ:http://stedolan.github.io/jq/
- JSON:選擇:http://jsonselect.org/
- JSON-命令:https://github.com/zpoley/json-command
- JSONPath:http://goessner.net/articles/JsonPath/,http://code.google.com/p/jsonpath/wiki/Javascript
- jsawk:https://github.com/micha/jsawk
- jshon:http://kmkeen.com/jshon/個
- json2:https://github.com/vi/json2
任何人提到Jshon或JSON.sh?
https://github.com/keenerd/jshon
管JSON來,然後將其穿過JSON對象,並打印出該路徑到當前對象(作爲一個JSON陣列),然後將對象,不空格。
http://kmkeen.com/jshon/
Jshon負荷從標準輸入JSON文本,執行操作,然後顯示在標準輸出上的最後一個動作,也有人是普通的文本處理流水線的一部分。
OSX上的例子:'brew install jshon','cat * .json | jshon' – kenorb 2014-08-29 09:58:31
我已經創建專門針對命令行JSON操作設計的模塊:
https://github.com/ddopson/underscore-cli
- FLEXIBLE - 用於處理JSON數據 「瑞士-軍隊刀」 工具 - 可以使用作爲一個簡單的漂亮打印機,或作爲一個全功能的JavaScript命令行
- 強大 - 公開underscore.js的全部功能和功能(加上underscore.string)
- SIMPLE - 簡化了寫JS單行類似於使用 「的perl -pe」
- CHAINED - 多個命令invokations可以鏈接在一起,以創建一個數據處理管線
- MULTI- FORMAT - 用於輸入/輸出格式富支持 - 漂亮印刷,嚴格JSON等[即將]
- 記錄 - 具有多個實例優秀命令行文檔的每一個命令
它允許你做強大的東西真的很容易:
cat earthporn.json | underscore select '.data .title'
# [ 'Fjaðrárgljúfur canyon, Iceland [OC] [683x1024]',
# 'New town, Edinburgh, Scotland [4320 x 3240]',
# 'Sunrise in Bryce Canyon, UT [1120x700] [OC]',
# ...
# 'Kariega Game Reserve, South Africa [3584x2688]',
# 'Valle de la Luna, Chile [OS] [1024x683]',
# 'Frosted trees after a snowstorm in Laax, Switzerland [OC] [1072x712]' ]
cat earthporn.json | underscore select '.data .title' | underscore count
# 25
underscore map --data '[1, 2, 3, 4]' 'value+1'
# prints: [ 2, 3, 4, 5 ]
underscore map --data '{"a": [1, 4], "b": [2, 8]}' '_.max(value)'
# [ 4, 8 ]
echo '{"foo":1, "bar":2}' | underscore map -q 'console.log("key = ", key)'
# key = foo
# key = bar
underscore pluck --data "[{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}]" name
# [ 'moe', 'larry', 'curly' ]
underscore keys --data '{name : "larry", age : 50}'
# [ 'name', 'age' ]
underscore reduce --data '[1, 2, 3, 4]' 'total+value'
# 10
而且它有可用的最好的「智能空白」 JSON格式化的一個:
如果您有任何功能要求,評論這篇文章或在github上添加一個問題。我很樂意優先考慮社區成員需要的功能。
太棒了!但是,可以在JSON數據上運行控制檯命令嗎?例如:給一個帶有URL數組的JSON文件,每個URL使用'wget'。 – 2013-09-27 11:44:37
@CamiloMartin - 最簡單的方法是打印出URL,每行一個URL,然後通過xargs或GNU parallel執行。 – 2013-09-27 16:48:33
@DaveDopson我可以使用'underscore'來分析具有嵌套對象和數組的嵌套json嗎? – user227666 2014-02-20 09:47:35
我更喜歡python -m json.tool
這似乎在默認情況下在大多數* nix操作系統上默認可用。
$ echo '{"foo":1, "bar":2}' | python -m json.tool
{
"bar": 2,
"foo": 1
}
但要注意的是,這將所有按鍵字母順序排序,這是或可能是在被認爲使用無序HashMaps這樣一些語言生成的JSON一件好事......
低估的答案。如果目標是驗證給定的JSON文件是否包含有效的JSON,那麼這是一個很好的命令行選擇。 – scorpiodawg 2012-09-11 23:19:44
這個答案沒有描述如何檢查指定鍵的值。 – 2014-05-09 07:23:56
@ColinSu但這也不是原來的問題。 'json.tool'只是簡單的打印json。如果你需要在shell腳本中提取/處理json數據,我會使用'jq',它是一個很棒的東西...... – muhqu 2014-05-09 08:04:28
我只是使jkid這是一個小的命令行JSON瀏覽器,我輕鬆地探索大JSON對象。可以「橫向」探索對象,並且可以使用「預覽」選項來避免控制檯溢出。
$ echo '{"john":{"size":20, "eyes":"green"}, "bob":{"size":30, "eyes":"brown"}}' > test3.json
$ jkid . eyes test3.json
object[.]["eyes"]
{
"bob": "brown",
"john": "green"
}
如何在mac中安裝'jkid'? – user227666 2014-02-20 09:32:41
如果你正在尋找一個可移植的C編譯工具:
http://stedolan.github.com/jq/
從網站:
JQ就像用於JSON數據的sed的 - 你可以使用它來分割和過濾並映射和轉換結構化數據,同樣易於使用sed,awk,grep和朋友讓你玩文字。
jq可以很輕鬆地將數據格式轉換成您想要的數據格式,而且這樣做的程序通常比您期望的要短且簡單。
教程:http://stedolan.github.com/jq/tutorial/
手冊:http://stedolan.github.com/jq/manual/
下載:http://stedolan.github.com/jq/download/
這裏的最佳答案imo。沒有沉重的依賴關係,小巧,功能強大,良好的文檔和輕鬆試用。非常感謝您提出這個建議! – FrozenCow 2013-10-06 00:33:57
在Ubuntu/Debian上,您可以「安裝jq」。 – 2017-12-11 17:35:57
對於猛砸/ Python的,這裏大約是Python的simplejson
一個基本的包裝:
json_parser() {
local jsonfile="my_json_file.json"
local tc="import simplejson,sys; myjsonstr=sys.stdin.read(); "`
`"myjson=simplejson.loads(myjsonstr);"
# Build python print command based on [email protected]
local printcmd="print myjson"
for ((argn=1; argn<=$#; argn++)); do
printcmd="$printcmd['${!argn}']"
done
local result=$(python -c "$tc $printcmd.keys()" <$jsonfile 2>/dev/null \
|| python -c "$tc $printcmd" <$jsonfile 2>/dev/null)
# For returning space-separated values
echo $result|sed -e "s/[]|[|,|']//g"
#echo $result
}
它確實只處理嵌套字典樣式的數據,但它適用於我需要的內容,對於遍歷json非常有用。它可能可以適應口味。
無論如何,那些不希望在另一個外部依賴項中獲取資源的東西本地化了。當然,除了python。
Ex。 json_parser {field1} {field2}
將運行print myjson['{field1}']['{field2}']
,產生與空間分隔的{field2}
相關聯的鍵或值。
- 1. Unix工具解析命令行
- 2. 解析JSON像在命令行解釋
- 3. Unix命令解釋
- 4. Java庫:命令行選項解析器
- 5. 用戶命令解析器
- 6. 解析命令行參數
- 7. 解析execve的命令行()
- 8. Cmake,Boost解析命令行
- 9. Python:解析命令行
- 10. 從Django運行unix命令
- 11. Marie命令行解釋器
- 12. 需要幫助解析文件通過UNIX命令
- 13. Unix命令解析點後的2個字符
- 14. Haskell命令系統解析器
- 15. Antlr3解析器路徑命令外殼
- 16. perl解析命令行參數
- 17. 阻止Java解析命令行參數
- 18. 在VB.NET中的NDESK命令行解析
- 19. Haskell:解析命令行參數
- 20. 如何解析命令行參數?
- 21. 解析類似命令行的線
- 22. bash解析命令行選項
- 23. 解析命令行參數字符串
- 24. 根據'='解析命令行參數
- 25. 命令行(CSC樣編譯)解析
- 26. 高效的命令行解析
- 27. 解析C#中的命令行選項
- 28. perl解析命令行選項
- 29. Symfony的命令行解析錯誤
- 30. perl解析命令行參數
我喜歡使用pythonpy(https://github.com/russell91/pythonpy):cat a.json | py --ji -x'x.attr' – RussellStewart 2014-09-14 20:25:06
相關:[用於解析Unix的JSON輸入的命令行工具?](http://softwarerecs.stackexchange.com/q/19018/3474)at SR – kenorb 2015-04-25 10:32:01
另請參見[Read在shell腳本中的json數據](http://stackoverflow.com/questions/20488315/read-the-json-data-in-shell-script) – koppor 2015-10-18 13:31:21