在 Windows 终端中格式化 cURL 输出

在 Windows 终端中格式化 cURL 输出

当我尝试执行 cURL 请求时这里,Windows 7 (x64) 返回没有换行符的输出:

C:\Users\kiwi>curl http://www.documentcloud.org/api/search.json?q=group:nytimes

{"total":2821,"page":1,"per_page":10,"q":"group:nytimes","documents":[{"id":"862
75-isn-10015-abd-al-rahim-al-nashiri-jtf-gtmo","title":"ISN 10015 - Abd al Rahim
 al Nashiri - JTF-GTMO Detainee Assessment","access":"public","pages":15,"descri
ption":null,"source":null,"created_at":"Sun, 24 Apr 2011 15:50:19 +0000","update
d_at":"Mon, 25 Apr 2011 17:11:41 +0000","canonical_url":"http://www.documentclou
d.org/documents/86275-isn-10015-abd-al-rahim-al-nashiri-jtf-gtmo.html","resource
s":{"pdf":"http://s3.documentcloud.org/documents/86275/isn-10015-abd-al-rahim-al
-nashiri-jtf-gtmo.pdf","text":"http://s3.documentcloud.org/documents/86275/isn-1
0015-abd-al-rahim-al-nashiri-jtf-gtmo.txt","thumbnail":"http://s3.documentcloud.
org/documents/86275/pages/isn-10015-abd-al-rahim-al-nashiri-jtf-gtmo-p1-thumbnai
l.gif","search":"http://www.documentcloud.org/documents/86275/search.json?q={que
ry}","page":{"text":"http://www.documentcloud.org/documents/86275/pages/isn-1001
5-abd-al-rahim-al-nashiri-jtf-gtmo-p{page}.txt","image":"http://s3.documentcloud
.org/documents/86275/pages/isn-10015-abd-al-rahim-al-nashiri-jtf-gtmo-p{page}-{s
ize}.gif"}}},{"id":"86274-isn-10020-majid-khan-jtf-gtmo-detainee-assessment","ti
tle":"ISN 10020 - Majid Khan - JTF-GTMO Detainee Assessment","access":"public","
pages":12,"description":null,"source":null,"created_at":"Sun, 24 Apr 2011 15:50:
18 +0000","updated_at":"Mon, 25 Apr 2011 17:10:01 +0000","canonical_url":"http:/
/www.documentcloud.org/documents/86274-isn-10020-majid-khan-jtf-gtmo-detainee-as
sessment.html","resources":{"pdf":"http://s3.documentcloud.org/documents/86274/i
sn-10020-majid-khan-jtf-gtmo-detainee-assessment.pdf" ...

这可能是默认行为,但是在 Windows 上使用 cURL 时我可以做些什么来获得一些可读的 JSON 输出?

答案1

这是一个老问题,但我想在总体简单的背景下回答。

  1. 安装 Node.Js(可选) - 如果你没有 Node js,请下载LTS 版本Node JS(如果需要,你甚至可以安装最新版本)
  2. 安装后(或者如果您已经安装了 node js,则只需确认类型node -vnpm -v
  3. 两者都应返回正确的版本号,如下所示

Node js 和 Npm 版本号快照

  1. 完成安装确认后,继续在节点上安装 jsontool lib 的全局版本(使用 -g)标志。npm install -g jsontool

json 工具 npm 安装

  1. 完成上一步的安装后,只需使用管道| json在 curl 请求的最后一行。
  2. 没有使用 json 管道进行输出 没有 json 管道
  3. 使用 json 管道输出 使用 json 管道进行漂亮输出

答案2

您可以使用 Windows 版本的杰奇格式化 json 的输出。

我通常将下载的可执行文件重命名为 justjq.exe并将其放在我的c:\Windows\System32目录中,以便可以在任何地方使用它。

要使用,只需将 curl 的输出导入其中,如下所示:

curl "http://www.documentcloud.org/api/search.json?q=group:nytimes" | jq

答案3

不完全是,但是这里有一个 Python 脚本可以对此进行改进。

import urllib2
import simplejson
import pprint

URL = "http://www.documentcloud.org/api/search.json?q=group:nytimes"

def showfeed(argv):
    argv[1] if len(argv) > 1 else URL
    fo = urllib2.urlopen(URL)
    obj = simplejson.loads(fo.read())
    pprint.pprint(obj)

if __name__ == "__main__":
    import sys
    showfeed(sys.argv)

答案4

请使用类似 JSON 解析器默认情况下打印效果很漂亮。

$raw用于原始输出(如curl)并将$json输出解析(和美化)为 JSON。

Xidel JSON 漂亮打印截图

相关内容