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

时间:2014-12-01 22:18:45

标签: json shell curl

在我的UNIX shell脚本中,当我执行curl命令时,我的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"}

请建议

10 个答案:

答案 0 :(得分:354)

尝试这样做:

curl ... | json_pp 

或使用使用标识过滤器:

curl ... | jq '.'

enter image description here

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

检查https://stedolan.github.io/jq/

答案 1 :(得分:33)

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

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

答案 2 :(得分:29)

  1. brew install jq
  2. command + | jq
  3. (例如:curl localhost:5000/blocks | jq
  4. 享受!
  5. enter image description here

答案 3 :(得分:5)

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

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

那就是它!

答案 4 :(得分:4)

这是吉尔斯答案的补充。有很多方法可以完成这项工作,但我个人更喜欢在常见的* nix系统上轻巧,易记和普遍可用的东西(例如,您首选的Linux风格的标准LTS安装或易于安装)。

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

  1. Python Json.tool模块,例如, echo'{“foo”:“lorem”,“bar”:“ipsum”}'| python -mjson.tool (专业人士:几乎可以随处使用;缺点:没有颜色编码)

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

  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

答案 5 :(得分:4)

签出curljson

$ pip install curljson
$ curljson -i <the-json-api-url>

答案 6 :(得分:3)

python -m json.tool
Curl http://127.0.0.1:5000/people/api.json | python -m json.tool

也可以提供帮助。

答案 7 :(得分:3)

动机:您要在curl命令请求后打印美化JSON响应。

解决方案json_pp-用于在某些输入和输出格式(其中之一是JSON)之间进行转换的命令行工具。该程序是从json_xs复制并修改的。默认输入格式为json,默认输出格式为json(带有pretty选项)。

症状json_pp [-v] [-f from_format] [-t to_format] [-json_opt options_to_json1[,options_to_json2[,...]]]

公式<someCommand> | json_pp

示例

请求

curl -X https://jsonplaceholder.typicode.com/todos/1 | json_pp 

回复

{
   "completed" : false,
   "id" : 1,
   "title" : "delectus aut autem",
   "userId" : 1
}

答案 8 :(得分:1)

您可以使用this node module

sudo npm i -g json;

然后只需在卷曲后附加|jsoncurl http://localhost:8880/test.json |json

答案 9 :(得分:0)

使用

curl <...> | xidel - -se '$json'

xidel可能也可以为您检索JSON。