curl输出在UNIX shell脚本中以可读的JSON格式显示

在我的UNIX shell脚本中,当我执行一个curl命令时,我的curl结果将显示如下,我将它redirect到文件:

{"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"} 

请build议

尝试这样做:

 curl ... | json_pp 

或使用身份filter与jq :

 curl ... | jq '.' 

在这里输入图像说明

或与nodejs和bash :

 curl ... | node <<< "var o = $(cat); console.log(JSON.stringify(o, null, 4));" 

我猜你想要美化JSON输出。 这可以通过使用python来实现:

curl http://localhost:8880/test.json | python -mjson.tool > out.json

  1. brew install jq
  2. command + | jq
  3. (例如: curl localhost:5000/blocks | jq
  4. 请享用!

在这里输入图像说明

我发现json_reformat非常方便。 所以我只是做了以下几点:

 curl http://127.0.0.1:5000/people/api.json | json_reformat 

而已!

这是吉尔斯的答案。 有很多方法可以完成这个任务,但是我个人更喜欢轻量级的,易于记忆的和普遍可用的(例如,在普通的* nix系统中提供标准的LTS安装,你喜欢的Linux风格或易于安装)。

以下是他们首选顺序的选项:

  1. Python的Json.tool模块,例如,echo“{”foo“:”lorem“,”bar“:”ipsum“}' python -mjson.tool(优点:几乎到处都是;缺点:没有颜色编码)

  2. jq(可能需要一次安装)echo'{“foo”:“lorem”,“bar”:“ipsum”}' jq(缺点:需要安装jq;优点:颜色编码和多function)

  3. json_pp(在Ubuntu 16.04 LTS中可用),例如echo'{“foo”:“lorem”,“bar”:“ipsum”}' json_pp

  4. 对于Ruby用户,gem install jsonpretty echo'{“foo”:“lorem”,“bar”:“ipsum”}' jsonpretty

只需在curl命令中附加?pretty关键字as-
如果你的curl命令是这样的 –
curl -XGET 'http://localhost:9200/_cluster/state'
然后有这样漂亮的输出使用 –
curl -XGET 'http://localhost:9200/_cluster/state'?pretty