我正在使用 ElasticSearch 迈出第一步,并从命令行测试我目前正在使用 curl 的东西。但是这有点烦人,因为我必须在文本编辑器上输入所有内容并粘贴到控制台中(控制台中没有制表符格式),并且您获得的 json 输出未格式化。
所以我想知道是否有许多 sql 控制台的等价物来处理 json 数据,以便更容易测试和使用 json 休息 Web 服务。
你用什么工具来完成这类任务?
我正在使用 ElasticSearch 迈出第一步,并从命令行测试我目前正在使用 curl 的东西。但是这有点烦人,因为我必须在文本编辑器上输入所有内容并粘贴到控制台中(控制台中没有制表符格式),并且您获得的 json 输出未格式化。
所以我想知道是否有许多 sql 控制台的等价物来处理 json 数据,以便更容易测试和使用 json 休息 Web 服务。
你用什么工具来完成这类任务?
首先,如果您获得的 json 输出未格式化,请附加?pretty=1
到任何 url。结果会好很多。python -m json.tool
如果您有 Python 2.6+ ,另一种选择是将输出通过管道传输到。我喜欢后一个选项,因为我将它保存到一个 shell 函数中,并且可以| j
在任何输出 json 的命令之后简单地键入。更短更通用。
对于发出 curl 命令,有几个选项。最通用的解决方案是使用整个命令创建一个 shell 脚本。例如:
curl -s localhost:9200/foo/_search -d'
{"query":
{"query_string":
{"query":"foo*"}}}' | python -m json.tool
与其在 shell 提示符下粘贴,不如将其保存在文件中。然后只需调整源并根据需要经常运行它。
% sh query
对此的一种变体是使用 Emacs。我用它curl
在缓冲区区域上运行,操纵结果等,shell-command-on-region
或者M-|
在那里是一个不错的选择。所以对于上面的脚本,我可以发出M-| sh RET
而不是切换到 shell。Vim 允许你做类似的事情。
我还没有检查过这个,但很多人似乎喜欢 elasticsearch-head。它是一个 UI,将发出查询并为您提供结构化结果。 http://mobz.github.com/elasticsearch-head/
更新:我最近注意到 Perl 的 JSON 模块附带一个方便的命令行实用程序,称为json_pp
该函数,类似于 Python 的json.tool
. 如果您安装JSON::XS
还有一个(更快的)json_xs
垃圾箱。
我发现了另一个看起来很方便的工具
http://stedolan.github.com/jq/tutorial/
curl ideasba.org/api/ideas/1 | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 525 100 525 0 0 990 0 --:--:-- --:--:-- --:--:-- 2488
{
"created": "2012-09-22T05:20:00Z",
"author": {
"nickname": "opensas",
"created": "2012-09-22T01:40:00Z",
"id": 2,
...
它有几个使用 json 的选项,比如过滤
curl ideasba.org/api/ideas/1 | jq .votes
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 525 100 525 0 0 809 0 --:--:-- --:--:-- --:--:-- 2441
{
"neg": 1,
"pos": 8
}
https://github.com/micha/jsawk是最好的解决方案。
JSAWK 和 Resty 规则 :)
我强烈推荐Chrome 的 Sense 插件。它为您提供智能自动完成、JSON 语法检查和整理,以及漂亮的语法高亮输出。它正在积极开发中,当我想在会谈中展示请求时,它是我选择的工具。