如何从命令行漂亮地打印JSON? (从文件)

我有一个json元素序列的文件:

{ element0: "lorem", value0: "ipsum" } { element1: "lorem", value0: "ipsum" } ... { elementN: "lorem", value0: "ipsum" } 

是否有一个shell脚本来格式化JSON以可读forms显示文件内容?

我看过这篇文章,我认为这是一个很好的起点!

我的想法是迭代文件中的行,然后:

 while read row; do echo ${row} | python -mjson.tool; done < "file_name" 

有没有人有任何其他的想法?

Solutions Collecting From Web of "如何从命令行漂亮地打印JSON? (从文件)"

将结果从文件中导入到python json工具2.6以后

 cat 'file_name' | python -m json.tool 

您可以使用 :

  Python JSON tool 

(需要Python 2.6+)

例如 :

 echo '{ "element0" : "lorem", "element1" : "ipsum" }' | python -m json.tool 

哪个会给你:

 { "element0": "lorem", "element1": "ipsum" } 

jq – 一个轻量级和灵活的命令行JSON处理器

我觉得这值得我自己进入,因为我花了比我们应该发现的更长的时间。 我正在寻找一个简单的方法来漂亮地输出docker inspect -f的json输出。 Noufal Ibrahim在上面简要地提到了另一个答案的一部分。

从jq网站(stedolan.github.io/jq/):

jq就像是sed的JSON数据 – 你可以用它来分割和过滤,并映射和转换结构化数据,sed,awk,grep和朋友让你玩文本一样简单。

它默认提供彩色的输出,你只需要管道到jq

例:

“原始”JSON输出与管道到jq的相同

彩色输出使用Pygmentize + Python json.tool

Pygmentize是一个杀手工具。 看到这个 我结合python json.tool与pygmentize

 echo '{"foo": "bar"}' | python -m json.tool | pygmentize -g 

对于其他类似的工具和安装说明,请参阅上面链接的答案。

这里是一个现场演示:

演示

有一堆他们。 我个人有这个别名在我的.zshrc

 pjson () { ~/bin/pjson.py | less -X } 

其中pjson.py

 #!/usr/bin/env python import json import sys try: input_str = sys.stdin.read() print json.dumps(json.loads(input_str), sort_keys = True, indent = 2) except ValueError,e: print "Couldn't decode \n %s \n Error : %s"%(input_str, str(e)) 

允许我在命令行中使用它作为管道(类似于curl http://.... | pjson )。

OTOH,自定义代码是一个负责任的,所以有jq ,这对我来说看起来像黄金标准。 它是用C语言编写的(因此是可移植的,没有像Python或Node这样的依赖关系),不仅仅是漂亮的打印而且速度很快。