如何在shell脚本中漂亮地打印JSON? [英] How can I pretty-print JSON in a shell script?
问题描述
是否存在一个(Unix)Shell脚本来以人类可读的格式格式化JSON?
Is there a (Unix) shell script to format JSON in human-readable form?
基本上,我希望它改变以下内容:
Basically, I want it to transform the following:
{ "foo": "lorem", "bar": "ipsum" }
...变成这样:
{
"foo": "lorem",
"bar": "ipsum"
}
推荐答案
使用Python 2.6+,您可以执行以下操作:
With Python 2.6+ you can just do:
echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool
或者,如果JSON在文件中,则可以执行以下操作:
or, if the JSON is in a file, you can do:
python -m json.tool my_json.json
如果JSON来自互联网资源(例如API),则可以使用
if the JSON is from an internet source such as an API, you can use
curl http://my_url/ | python -m json.tool
为方便起见,在所有这些情况下,您都可以创建别名:
For convenience in all of these cases you can make an alias:
alias prettyjson='python -m json.tool'
通过输入更多内容来更加方便:
For even more convenience with a bit more typing to get it ready:
prettyjson_s() {
echo "$1" | python -m json.tool
}
prettyjson_f() {
python -m json.tool "$1"
}
prettyjson_w() {
curl "$1" | python -m json.tool
}
以上所有情况.您可以将其放在.bashrc
中,并且每次在Shell中都可用.像prettyjson_s '{"foo": "lorem", "bar": "ipsum"}'
一样调用它.
for all the above cases. You can put this in .bashrc
and it will be available every time in shell. Invoke it like prettyjson_s '{"foo": "lorem", "bar": "ipsum"}'
.
这篇关于如何在shell脚本中漂亮地打印JSON?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!