JSON缩进级别约定是什么?

65

是否有“标准”的JSON缩进级别规定?应该是2个空格、3个空格、4个空格、制表符分隔,还是其他什么?

我曾经查看官方JSON网站,但其中没有说明。


7
没有这样的惯例。通常,JSON 以最小形式(最少的空格和字符)发送。 - Basile Starynkevitch
1
@jenson-button-event 很遗憾,人数太多了 :( - Alnitak
1
从您链接的页面上可以看到:“空格可以在任何一对标记之间插入。”因此,没有这样的约定。 - Felix Kling
@Alnitak,不幸的是,我也是其中之一。 :( 我手工制作它用于我的配置文件。所以,这不是正确的事情? - Glenn Mohammad
7
给出的奇怪关闭原因是,不存在缩进标准这一事实,而不是观点。 - Alnitak
2个回答

57

JSON是一种序列化格式,而不是演示格式。

因此,没有“标准”的缩进 - JSON通常尽可能紧凑地发送。

(也就是说,有一个选项JSON.stringify()请求“漂亮的打印”JSON - 查看MDN文档上的space参数)


我明白了。但是,如果我使用JSON作为配置格式(例如在配置文件中),我应该使用自己的缩进标准还是已经存在任何“通用”标准? - Glenn Mohammad
2
没有通用标准,只需根据您的要求使用看起来好的内容-JSON解析器将忽略额外的空格。 - Alnitak

22

没有标准。 JSON规范 允许使用任意数量的空格。

然而,当你将JSON进行美化以使其易读(例如在配置文件中),最好遵循项目的编码惯例并使用与JS对象字面量相同的缩进级别——通常为4个空格(Crockford)或2个空格(Node.js)。


7
请勿混淆 Crockford 的“编码准则”和“格式化准则”。前者是好的,而后者则是一种教条主义和他个人喜好的混合体。请注意保持原意,让翻译更加通俗易懂。 - Alnitak
5
@Alnitak:当然,但是4个空格在JS代码中非常常见;我很少看到使用8个空格、2个空格或缩进符的情况。Crockford只是我找到的第一个链接……我要进行编辑。 - Bergi
8
制表符的大小可以根据主观意见进行指定,旨在用于缩进,在这种情况下,它比大多数空格约定使用更少的字节。 - Cees Timmerman
1
@CeesTimmerman 是的。然后你会陷入一个噩梦,你的SCM会生成一堆变化,人们会浪费数小时的时间将空格改为制表符或反之。这就是为什么许多/大多数IDE默认情况下用空格替换制表符的很好的原因!老实说,没有人关心他们的json文件在git repo中占用的字节数。当有人来改变格式时,他们确实会关心。 - Philip Couling
1
@bergi 如有异议,请随意发表。我的经验是我所说的那样(近年来),这是由于现代 IDE 的默认行为。... 我原以为他是指 SCM,这就是为什么我指出它会留下混合物的原因。 - Philip Couling
显示剩余5条评论

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