在我的Unix shell脚本中,当我执行curl命令时,结果将显示如下,我将重定向到文件:
{"type":"Show","id":"123","title":"name","description":"Funny","channelTitle":"ifood.tv","lastUpdateTimestamp":"2014-04-20T20:34:59","numOfVideos":"15"}
但是,我想把这个输出放在可读的JSON格式如下文件:
{"type":"Show",
"id":"123",
"title":"name",
"description":"Funny",
"channelTitle":"ifood.tv",
"lastUpdateTimestamp":"2014-04-20T20:34:59",
"numOfVideos":"15"}
如何以这种方式格式化输出?
这是对吉尔斯的回答的补充。有很多方法可以做到这一点,但就我个人而言,我更喜欢在常见的*nix系统上使用轻量级、易于记忆和普遍可用的东西(例如,附带您喜欢的Linux风格的标准LTS安装或易于安装)。
以下是这些选项的优先顺序:
Python Json。工具模块
echo '{"foo": "lorem", "bar": "ipsum"}' | python -mjson.tool
优点:几乎随处可见;缺点:没有颜色编码
Jq(可能需要一次安装)
echo '{"foo": "lorem", "bar": "ipsum"}' | jq
缺点:需要安装jq;优点:颜色编码,用途广泛
json_pp(在Ubuntu 16.04 LTS中可用)
echo '{"foo": "lorem", "bar": "ipsum"}' | json_pp
对于Ruby用户
gem install jsonpretty
echo '{"foo": "lorem", "bar": "ipsum"}' | jsonpretty
动机:你想在curl命令请求后打印美化的JSON响应。
解决方案:json_pp -在某些输入和输出格式(其中之一是JSON)之间转换的命令行工具。这个程序是从json_xs复制并修改的。默认的输入格式是json,默认的输出格式是带有pretty选项的json。
Synposis:
Json_pp [-v] [-f from_format] [-t to_format] [-json_opt options_to_json1[,options_to_json2[,…]]]
公式:<someCommand> | json_pp . sh
例子:
请求
curl -X https://jsonplaceholder.typicode.com/todos/1 | json_pp
响应
{
"completed" : false,
"id" : 1,
"title" : "delectus aut autem",
"userId" : 1
}