未来会有什么格式会淘汰 json 吗?

2021-08-06 13:12:39 +08:00
 find456789

我个人感觉 json 有一个很大的弊端就是 里面不能写注释

有时候想给 package.json 加注释,不好加

6200 次点击
所在节点    问与答
63 条回复
cpstar
2021-08-06 21:29:02 +08:00
以数据来讲,除非 key-value 不管用,否则 json 无可替代的优势。
但是以数据来讲,为啥要加注释?

那加了注释,就不是数据维度了。而是 coding 编码的事情了,那不要说 json 不行,而是框架不行。
namelosw
2021-08-06 21:52:52 +08:00
@3dwelcome 逗号的话随手就写上了,像 Rust 这种新生代语言还有分号…

换行分割 parser 写起来就麻烦些,JSON 之所以这么流行,和 parser 好写有很大关系,任何一个新语言和 DSL 都可以很快地写出来一个 JSON 库

真说比较影响使用的是没有注释,然后双引号之类的 escape 过于复杂等等
Trim21
2021-08-06 22:05:48 +08:00
@airyland #40 都 var 了,直接用 js 的行注释不就好了。。。
iyaozhen
2021-08-06 22:26:39 +08:00
我在想 json 不是被 pb 替代了么 原来说的是配置。。。
airyland
2021-08-06 22:29:35 +08:00
@Trim21 写快了,前面忽略,不影响 json 。
searene
2021-08-06 22:33:27 +08:00
lisp 代码可以直接当成配置用
Trim21
2021-08-06 22:55:17 +08:00
@airyland #45
但你这例子不是一个合法的 json 啊,key 不能重复的
weyou
2021-08-06 23:30:15 +08:00
用法问题。json 格式本来就不是用于配置文件的,而是作为内部数据交换的,面向的是”机器“。它就不是给人手动编辑和阅读的一个格式,要啥注释?

yaml 才是适合配置文件的格式,面向的是“人”。它不需要逗号,不需要引号,方便编辑。而且换行缩进增强了可读性。
airyland
2021-08-06 23:33:28 +08:00
@Trim21 应该说取决于解析实现,大多数情况下可能只是 warning 不是 error,不鼓励有重复 key 。js 中只会取后者的值。

https://stackoverflow.com/questions/21832701/does-json-syntax-allow-duplicate-keys-in-an-object/23195243#23195243
chaleaoch
2021-08-06 23:48:07 +08:00
我去谢谢楼主, 我一直没想明白为什么 yaml 比 json 对人类友好.
现在知道了 至少原因之一是因为 json 不让注释啊...
binux
2021-08-07 00:15:17 +08:00
@ipwx 不是说缩进容易错,而是 yaml 类型假设和各种复杂的语法同意错吧,而且你还不一定知道错了
binux
2021-08-07 00:20:06 +08:00
@yimity 你这叫做 js 不叫 JSON,JSON 标准中是不允许注释的,你的能用只是恰好 JSON 是符合 js 语法的罢了

https://stackoverflow.com/q/244777
binux
2021-08-07 00:21:26 +08:00
@yimity 哦不好意思没看到你把它放进 key 了。。那如果有多个注释怎么办?
szzhiyang
2021-08-07 00:50:18 +08:00
没有。
xxfye
2021-08-07 01:01:01 +08:00
toml
iseki
2021-08-07 01:42:19 +08:00
也许 yaml 等格式可以替代下? json 不支持注释和末尾逗号,都是巨坑。但是 yaml 的缩进对眼睛要求有点高也挺难受的…
EscYezi
2021-08-07 03:24:52 +08:00
xml 还没被淘汰呢,别说 json 了 2333
HankLu
2021-08-07 04:10:49 +08:00
为什么要淘汰 json ?
NilChan
2021-08-07 04:24:45 +08:00
yaml 就算了吧,反人类的东西
ikaros
2021-08-07 09:05:03 +08:00
toml yaml 层级肉眼看瞎

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/794059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX