适用于Linux的JSON命令行格式化工具

75

有没有适用于Linux命令行的编辑器或工具可以格式化JSON数据?


我已经使用CoffeeScript实现了自己的程序,并使用Node.js运行:http://skovalyov.blogspot.com/2012/09/json-format-command-line-utility.html - skovalyov
jq 很棒。它提供了类似于 jQuery 的 JSON 接口(它的主页说它是用于 JSON 的)http://stedolan.github.io/ - jcubic
https://dev59.com/2nRC5IYBdhLWcg3wRO3k - Ciro Santilli OurBigBook.com
4个回答

106

10
过时的答案。使用 jq。 - Alex R
不适用于布尔值 truefalse,仅适用于 Python 格式中的 True - Kamil
这个答案并不过时,它仍然可以与python3 -m json.tool一起使用。但是,jq会给你漂亮的颜色 :) - tjb

87

jq是一个轻量级且灵活的命令行JSON处理器。

http://stedolan.github.io/jq/

jq就像针对JSON数据的sed - 您可以使用它来切片、过滤、映射和转换结构化数据,就像sed、awk、grep等工具让您处理文本一样方便。

jq用可移植的C语言编写,并且它没有运行时依赖。 您可以下载单个二进制文件,将其scp到远程机器上,然后期望它正常工作。


9
对我来说,这个解决方案似乎是最好的:易于安装,并且输出保持了输入属性的顺序 - 这在编写文档时可能非常实用,因为它支持更好的可读性。 典型用法:$ jq . data.json(注意点号在 jq 后面)。 - Jan Vlcinsky
1
jq非常出色。请注意,这将无法工作。jq . data.json > data.json会覆盖自身。请导出到临时文件并覆盖现有文件。 - mirageglobe
4
确实,jq非常出色。一旦你安装了jq,在Vim中,你可以将任何JSON粘贴到一个新的缓冲区中,并运行:%!jq '.',这样就可以将缓冲区中的JSON格式化输出。来源:Vim:美化JSON - icc97

20

在Ubuntu上,可以通过apt:python3-demjson来获取jsonlint

使用方法:

$ sudo apt install -y python3-demjson
$ jsonlint -f input.json > output.json

1
非常适合处理不符合规范的JSON数据。其他工具(如jq和Python的json模块)需要完全符合规范的JSON才能正常工作。 - pR0Ps
5
目前发现,安装了“python-demjson”包后,该命令的名称不再是“jsonlint”,而是“jsonlint-py”。 - vorburger
现在看起来apt软件包被称为python3-demjson。但是,与此软件包一起安装的命令仍然被称为“jsonlint”。 - cherrywoods

9
添加到vimrc中:
" Format JSON data
map <C-F6> :%!python -m json.tool<CR>

您可以使用快捷键 CTRL+F6 格式化 JSON 数据。


或者在 Vim 的命令模式下:

%!python -m json.tool

如果您正在使用vim,可以执行以下操作:au FileType json set equalprg=python\ -m\ json.tool,然后使用=进行格式化。 - Tanath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接