[**更新:**在此问题发布8小时后,JSON bundle的作者收到了此问题的通知,并修复了此问题。]
我在一个文件application.json
中有下面的JSON数据,在这篇文章的结尾显示,我已经使用JSON bundle、Emacs、BBEdit和Sublime Text 2的TextMate来正确地缩进它,但似乎都不能。
TextMate和Sublime Text 2都坚持第一个{
不应该缩进,第一个主要问题是"child": {
的右大括号。TextMate和Sublime Text 2都拒绝将}
对齐在"child": {
的左侧。Emacs继续对每一行缩进越来越多。而且BBEdit似乎根本没有重新缩进功能(可能是这样吗?)。
有没有一种方法可以正确地缩进文件,或者TextMate和Sublime Text 2都对JSON数据做了正确的事情?
[
{
"settings": [ "master" ],
"appPort": "8666",
"specs": {
"frame" : {
"type" : "HTMLFrameMojit",
"config": {
"deploy": true,
"child": {
"type" : "HelloWorldMojit"
},
"assets": {
"top": {
"css": [
"/static/HelloWorldMojit/assets/index.css"
]
}
}
}
}
}
},
{
"settings": [ "environment:development" ],
"staticHandling": {
"forceUpdate": true
}
}
]
8条答案
按热度按时间vm0i2vca1#
我found一个BBEdit的解决方案,很容易,工作得很好。
将以下脚本放入
~/Library/Containers/BBEdit/Data/Library/Application Support/BBEdit/Text Filters/FormatJSON.sh
(在MacOS 11 Big Sur或更高版本上)对于MacOS 10.15 Catalina及更低版本,请使用此位置:
~/Library/Application Support/BBEdit/Text Filters/FormatJSON.sh
1.在BBEdit中打开一个JSON文件。不需要重新启动BBEdit,因为BBEdit太棒了!
1.选择文本〉应用文本过滤器〉格式JSON
我用一个每行包含3,612,683个字符的JSON文件进行了测试,BBEdit打开了这个文件并重新格式化,没有显示"死亡旋转沙滩球"忙碌等待鼠标光标。
dauxcl2d2#
解决方案1:使用
Python
这个答案类似于this的答案,只是我使用
python file
来处理JSON格式。1.如果
bbedit
应用程序已打开,则退出该应用程序,1.将以下脚本pretty-json.py放入
~/Library/Application\ Support/BBEdit/Text\ Filters/
路径1.要进行测试,请在BBEdit中打开JSON文件。
1.选择
Text
--〉Apply Text Filter
--〉pretty-json.py
1.如果遇到格式错误等问题,上述脚本将在New file中添加错误,并且不会更改原始JSON。
而this的情况并非如此
参考:https://gist.github.com/brokaw/95ade1358954cd97d0f2c8e992e14b08
如需更多信息:参考this
上述过滤器适用于较小的JSON文件,但如果JSON文件较大(~ 40 MB),则格式化速度会很慢。
要解决此问题,请使用以下解决方案
解决方案2:使用
jq
为了更快地格式化json,
1.安装jq
brew install jq
1.检查您是否能够在终端中执行
jq
,或者需要完整路径,添加以下文件中的任何工作项来代替jq
1.在
~/Library/Application\ Support/BBEdit/Text\ Filters/
位置添加fast-json-pretty.sh
文件1.重新启动bbedit。
prdp8dxp3#
我刚刚在捆绑包中纠正了这个问题,对于2.0用户,捆绑包应该在24小时内更新。
qlvxas9a4#
在BBEdit 14.0及更高版本中,文本菜单上的“重新格式化文档”将重新格式化JSON。您也可以使用内置的Language Server Support和支持重新格式化的JSON语言服务器。
g52tjvyc5#
根据http://jsonprettyprint.com/的说法,Textmate和Sublime没有做正确的事情。
您使用的是哪个版本的Emacs?
在24.2.1中,您的JSON blob在
js-mode
(Emac的默认javascript主模式)中完美地缩进,没有任何问题。如果您要进行任何重要的Javascript开发,我建议您查看js 2-mode https://github.com/mooz/js2-mode,它将Emacs转变为一个很棒的JS IDE。
dw1jzc5e6#
精致漂亮的JSON
Sublime Pretty JSON缩进第一个
{
井。这是我得到的结果:安装
在崇高文本2中:首选项=〉包控制=〉安装包=〉“Pretty Json”=〉重新启动Sublime =〉选择JSON文本=〉按下:
moiiocjp7#
这是一个简单地使用谷歌Chrome或NodeJS本身的解决方案,下面是如何:
只需打开Google Chrome开发工具或NodeJS提示符,然后输入
复制并粘贴对象,这样就像
现在,在Google Chrome浏览器中,只需输入
在NodeJS中,由于它会一字不差地打印出
\n
,所以您可以使用如果您希望缩进仅为2个空格,只需使用
2
而不是4
。如果希望缩进为制表符而不是空格,只需使用
uhry853o8#
1.在
~/Library/Application\ Support/BBEdit/Text\ Filters/
中创建脚本文件fast-json-pretty.sh
1.插入以下脚本:
1.按如下方式应用文本过滤器:一个月两个月一个月--〉一个月三个月一个月--〉一个月四个月一个月--〉一个月五个月一个月
这是DKB的JQ脚本版本的重新工作版本,因为至少对我来说,它需要完整的路径和结尾的一个点(.)才能正常工作。