JSON 设计得真的反人类,为什么不能像 PHP 数组那样简洁明了?

2022-03-16 11:29:35 +08:00
 kisshere
我到现在都还没搞明白什么时候该用大括号,什么时候该用中括号,另外,我还是没搞明白 key 到底要不要加引号???加不加引号是否影响各种浏览器兼容性?为什么不像 php7 那样直接全部用中括号,统一格式,简洁明了。这为本来就复杂的前端更加雪上加霜
15474 次点击
所在节点    程序员
134 条回复
heyOhayo
2022-03-16 13:42:13 +08:00
找个厂上班吧
bigbigpark
2022-03-16 13:45:34 +08:00
钓鱼贴??
wdssmq
2022-03-16 13:49:10 +08:00
JS 和 PHP 都会一点儿,同不理解楼主在不满啥。。

JSON 这东西,很多地方都能直接用这点儿很不错,偶尔的偶尔手动编辑下也还算方便。。

编辑频率高点儿就不如 yaml 了,但是使用时就要需要额外转换。。



JS 里,能用 v.a 的地方也可以用 v["a"];

PHP 里该用 $v->a 还是 $v["a"] 要仔细区分就很气人。。
skymei
2022-03-16 13:59:13 +08:00
你可别给 PHP 招黑了
JohnWangggg
2022-03-16 14:09:18 +08:00
2333333333333333333
icylogic
2022-03-16 14:19:51 +08:00
感觉 v 友攻击性有点强啊
arrando
2022-03-16 14:20:00 +08:00
。。。。。。
lancelock
2022-03-16 14:24:49 +08:00
这跟前端没关系,array 和 dictionary 的概念是普遍的,逻辑上本来就是不一样的结构,为什么要用一样的表示方法,混乱不堪。还有 json 只是数据交换格式,和浏览器兼容性又有什么关系
fkdtz
2022-03-16 14:25:52 +08:00
这。。。楼上喷的够多了,咱就不喷了
不过其实 PHP 的数组使用 HashTable 来实现的,只不过字典的 key 支持数组和字符串,也就是 PHP 中所谓的索引数组和关联数组。
所以在用 PHP 数组的时候,实际上都是在操作字典,这可能是楼主分不清大括号和花括号的原因之一。
raptor
2022-03-16 14:26:19 +08:00
这是 PHP 的锅,不是 JSON 的锅。

多学几种语言就知道了,只有 PHP 是字典和数组都用[]的,别的语言都是分别用{}和[]……
Envov
2022-03-16 14:33:47 +08:00
{1:{id:1,name:'dasdas'},2:{id:2,name:'dasdas'}}

[{id:1,name:'dasdas'},{id:2,name:'dasdas'}]
summerLast
2022-03-16 14:35:46 +08:00
@lancelock 没有用过 php,但我好像可以理解为啥这样,哈哈哈 数组变成了字典的子集 如 [0:"a",1:"b",2:"c"] 前面 0 1 2 不写的话可以这样 ["a","b","c"] ,不知 php 是不是这样
summerLast
2022-03-16 14:40:42 +08:00
@summerLast 0 1 2 解释器自动填充,一个语法糖罢了,但是好像这个玩意也可以做成结构的载体 可以做成数组的载体 至于底层内存分配是连续的空间或是离散的则被屏蔽掉了,用起来简单了,但也让楼主分不清为啥这样了,哈哈哈哈
Hanggi
2022-03-16 14:43:17 +08:00
感觉挺好的,确实可以多学几种语言。

建议学 js 、然后底层语言和高性能各学一个、最好 python 也学一下,虽然多,但是可以慢慢来。
9c04C5dO01Sw5DNL
2022-03-16 14:44:20 +08:00
json 就是 json ,前端要用,后端也要用 (狗头
summerLast
2022-03-16 14:47:49 +08:00
对于这个语法糖 还是站 json 的写法,原因就是 当用数组'[]'时习惯的期望值是内存的连续空间 ,而使用结构'{}'时则更倾向与离散空间, 这个语法会导致思维的负担
lancelock
2022-03-16 14:52:24 +08:00
@summerLast php 里压根没有数组,本质都是字典,key 就是 index ,只是被隐藏了。js 也是这样的,不过 js 起码形式上做了区分,php 则完全没区分
markgor
2022-03-16 14:57:46 +08:00
@Rocketer #26 后面那句就不够严谨了....
数组形式可以通过 length 获取长度,对象形式没有 length 属性。
nitmali
2022-03-16 15:06:34 +08:00
@markgor 那对于 js 来说 确实数组也是对象
woomly
2022-03-16 15:08:34 +08:00
你这一来,这为本来就容易招黑的 PHP 更加雪上加霜...

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

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

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

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

© 2021 V2EX