如何解决如何始终使JSON输出使用jq很好地格式化,而不附加jq命令
我刚刚在Ubuntu 18.04上安装了jq,在进行curl调用时,它的格式确实很好。我想知道是否有一种方法可以始终使我的终端输出JSON数据的格式正确,而不必在其末尾附加| jq .
命令吗?我对在.zshrc
文件中设置别名很熟悉,但是我没有一个单独的命令可以用于此目的,所以不确定如何实现此目的。
我运行的虚拟命令
curl -X GET localhost:3000/products | jq .
我希望从CLI返回json时jq命令始终有效。
谢谢!
解决方法
虽然我不会说这 做不到,但我不仅不知道这样做的简单方法,而且我认为这样做非常具有挑战性都是出于以下原因:
-
很难可靠地确定命令正在输出JSON。许多事情看起来像JSON,但并非旨在成为JSON。命令可能会输出大部分类似于JSON的内容,但并非完全是JSON。
-
直到完成之前,不可能知道长时间运行的命令是否正在输出有效的JSON。这给过渡期间的工作带来了两难境地-等待它完成(可能无限期地结束(尤其是在等待您的输入!)),或者找到某种方式回滚输出(如果事实证明我们猜错了)。 >
-
如果命令要返回JSON,则很难预先进行预测。如您的示例所示,您无法确定curl命令将返回的远程服务器。
-
不清楚对于非平凡的命令(例如调用shell函数或管道或应用重定向),或者对于使用高级控制代码重绘屏幕的程序(例如文本编辑器),该做什么是“正确的”事情。
由于这些原因,我认为,如果可能的话,将需要一个高级的外壳程序来捕获用户执行的所有命令的输出,分析并格式化连续输出的输出,并具有回滚和重新格式化的能力(或如果它意识到输出与其显示方法不兼容,则将其格式化)。我认为这会很有趣,但是我不知道这样的外壳。
,您可以从一个简单的脚本开始,例如
$ cat curljq
#!/bin/bash
curl "$@" | jq .
$ chmod +x curljq
$ ./curljq -Ss -H "Accept: application/json" https://reqbin.com/echo/get/json
{
"success": "true"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。