如何在Shell脚本中漂亮地打印JSON?
是否有()Shell脚本以易于理解的格式格式化?
基本上,我希望它可以转换以下内容:
{ "foo": "lorem", "bar": "ipsum" }
...变成这样:
{
"foo": "lorem",
"bar": "ipsum"
}
#1楼
具有 ,可以在命令⾏上使⽤或包含在Node.js项⽬中。
html5里有哪些标签npm install jsonlint -g
然后
jsonlint -p myfile.json
要么
curl -s "api.twitter/1/users/show/user.json" | jsonlint | less
#2楼
我编写了⼀个⼯具,该⼯具具有可⽤的最佳“智能空⽩”格式化程序之⼀。 与此处的⼤多数其他选项相⽐,它产⽣的可读性更⾼,输出的详细信息更少。
这是“智能空⽩”的样⼦:
我可能有点偏颇,但是它是⽤于从命令⾏打印和操作JSON数据的强⼤⼯具。 它使⽤起来超级友好,并且具有⼴泛的命令⾏帮助/⽂档。 这是⼀把瑞⼠军⼑,我⽤它来完成1001个不同的⼩任务,这会令⼈讨厌地以任何其他⽅式进⾏。
最新⽤例:Chrome,Dev控制台,“⽹络”选项卡,全部导出为HAR⽂件,“ cat site.har |下划线选择'.url'--outfmt text | grep mydomain”; 现在,我有⼀个按时间顺序排列的列表,列出了在加载公司⽹站期间提取的所有URL。
漂亮的打印很容易:
underscore -i data.json print
⼀样:
cat data.json | underscore print
同样,更明确:
cat data.json | underscore print --outfmt pretty
这个⼯具是我⽬前的热情项⽬,因此,如果您有任何功能要求,我很有可能会解决。
#3楼
在* nix上,从stdin读取并写⼊stdout的效果更好:
#!/usr/bin/env python
"""
Convert JSON data to human-readable form.
(Reads from stdin and writes to stdout)
"""
import sys
try:
import simplejson as json
except:
import json
print json.dumps(json.loads(ad()), indent=4)
将此⽂件放⼊您的PATH⽂件中(我在的回答后命名为mine“ prettyJSON”),然后对其进⾏chmod +x ,您就可以开始了。
#4楼
使⽤以下命令安装yajl-tools:
sudo apt-get install yajl-tools
然后,
echo '{"foo": "lorem", "bar": "ipsum"}' | json_re
#5楼python解析json文件
尝试 。 它有颜⾊!
⽤pip安装它:
⚡ pip install pjson
然后将所有JSON内容传递给pjson 。
#6楼
您可以使⽤:js教程网站
使⽤⾮常简单,效果很好! 它可以处理⾮常⼤的JSON结构,包括流。 您可以到他们的教程。
⽤法⽰例:
$ jq --color-output . file1.json file1.json | less -R
$ command_with_json_output | jq .
$ jq . # stdin/"interactive" mode, just enter some JSON
$ jq . <<< '{ "foo": "lorem", "bar": "ipsum" }'
{
"bar": "ipsum",
"foo": "lorem"
}
的。 是⾝份过滤器。
#7楼
或者,使⽤Ruby:
echo '{ "foo": "lorem", "bar": "ipsum" }' | ruby -r json -e 'jj JSON.parse gets'
#8楼
更新我正在使⽤jq如另⼀个答案中所建议。 它在过滤JSON⽅⾯⾮常强⼤,但是,从最基本的⾓度来说,它也是⼀种漂亮地打印JSON以供查看的绝佳⽅法。
是⼀个⾮常不错的命令⾏JSON漂亮打印机。
从⾃述⽂件:
漂亮的打印Web服务响应如下:
curl -s -L <!----&/tYTq5Pu | jsonpp
使磁盘上到处运⾏的⽂件精美:
jsonpp data/long_malformed.json
如果您使⽤的是Mac OS X,则可以brew install jsonpp 。 如果没有,您可以简单地将⼆进制⽂件复制到$PATH某个位置。
#9楼
使⽤Python 2.6+,您可以执⾏以下操作:
echo '{"foo": "lorem", "bar": "ipsum"}' | python -l
或者,如果JSON在⽂件中,则可以执⾏以下操作:
python -l my_json.json
如果JSON来⾃互联⽹来源(例如API),则可以使⽤
curl my_url/ | python -l
为⽅便起见,在所有这些情况下都可以使⽤别名:
alias prettyjson='python -l'
为了⽅便起见,请进⾏更多输⼊以使其就绪:
prettyjson_s() {
echo "$1" | python -l
}
prettyjson_f() {
python -l "$1"
}
prettyjson_w() {
curl "$1" | python -l
}
对于上述所有情况。 您可以将其放在.bashrc并且每次在Shell中都可⽤。 像prettyjson_s '{"foo": "lorem", "bar": "ipsum"}'⼀样调⽤它。
#10楼
JSON Ruby Gem与Shell脚本捆绑在⼀起以美化JSON:
sudo gem install json
echo '{ "foo": "bar" }' | prettify_json.rb
脚本下载:
#11楼
对于Perl,请使⽤CPAN模块JSON::XS 。 它安装了命令⾏⼯具json_xs 。
验证:
json_xs -t null < myfile.json
将JSON⽂件src.json为pretty.json :
< src.json json_xs > pretty.json
如果您没有json_xs ,请尝试json_pp 。 “ pp”表⽰“纯perl” –该⼯具仅在Perl中实现,没有绑定到外部C库(XS代表Perl的“扩展系统”)。
#12楼
焦化
我将python的l与pygmentize结合在⼀起:
echo '{"foo": "bar"}' | python -l | pygmentize -g
中列出了⼀些pygmentize的替代⽅法。
这是⼀个现场演⽰:
#13楼
我使⽤的“ space”参数在JavaScript中漂亮地打印JSON。
例⼦:
rotate3d工具使用// Indent with 4 spaces
JSON.stringify({"foo":"lorem","bar":"ipsum"}, null, 4);
// Indent with tabs
JSON.stringify({"foo":"lorem","bar":"ipsum"}, null, '\t');
从带有Node.js的Unix命令⾏中,在命令⾏上指定JSON:
$ node -e "console.log(JSON.stringify(JSON.parse(process.argv[1]), null, '\t'));" \
'{"foo":"lorem","bar":"ipsum"}'
返回值:
{
中文翻译成英文转换器"foo": "lorem",
"bar": "ipsum"
}
从带有Node.js的Unix命令⾏中,指定包含JSON的⽂件名,并使⽤四个空格的缩进:
美俄完成换囚程序$ node -e "console.log(JSON.stringify(JSON.parse(require('fs') \
.readFileSync(process.argv[1])), null, 4));" filename.json
使⽤管道:
echo '{"foo": "lorem", "bar": "ipsum"}' | node -e \
"\
s=process.openStdin();\
d=[];\
<('data',function(c){\
d.push(c);\
});\
<('end',function(){\
console.log(JSON.stringify(JSON.parse(d.join('')),null,2));\
});\
"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论