JSON 数组存了多种数据类型的话,用其它语言操作时会不会造成问题?

2019-02-02 21:23:26 +08:00
 headin

类似这样的数组 ["hello",334]

1959 次点击
所在节点    问与答
12 条回复
misaka19000
2019-02-02 21:32:26 +08:00
这不是一个 json 数组
bumz
2019-02-02 21:35:14 +08:00
@headin #0 数组本来就应该放同一类型的东西,放不同东西的逻辑何在呢?
@misaka19000 #1 这个数组是符合 https://www.json.org/ 的定义的
momocraft
2019-02-02 21:43:32 +08:00
允許一數組元素不同類型的語言就沒問題
不允許的也有方法迴避問題
V2exUser
2019-02-02 21:48:35 +08:00
@misaka19000 这是一个数组啊,类型是字符串。
Cbdy
2019-02-02 21:51:44 +08:00
不会
ipwx
2019-02-02 21:54:04 +08:00
@bumz 这是一个数组,类型是 Object。有问题吗?
rayhy
2019-02-02 21:57:26 +08:00
各种语言里成熟的 json 库就不会。举个例子,C 语言。 ["hello",334] 是包含类别 tag 的 struct 的数组,比如

https://github.com/DaveGamble/cJSON/blob/c69134d01746dcf551dd7724b4edb12f922eb0d1/cJSON.h#L103-L123
geelaw
2019-02-02 21:58:23 +08:00
@ipwx #6 问题在于 1 instanceof Object 是 false。

@bumz #2 JavaScript array 是不存在“数组里元素类型”的概念的,而且

[ { hasB: false }, { hasB: true, b: 1 }]

算是“同一类型”吗?

#0 不会,因为可以操作 JavaScript object 的语言都已经有对应 JavaScript array 的东西了。
GeekCourse
2019-02-02 22:27:07 +08:00
php 处理没有任何问题
headin
2019-02-02 22:54:58 +08:00
感谢楼上各位。
RqPS6rhmP3Nyn3Tm
2019-02-03 03:43:46 +08:00
用一个数字字符串用做 key 可能会出问题
bumz
2019-02-03 15:57:21 +08:00
@geelaw #8 javascript 中不存在数组里元素类型的概念,但是在应用中,不同的 object 也必须要具有一定的格式才有意义,这种「格式」对应的就是静态类型语言中类型的概念

对于 key 是任意的情形,这样的 object 叫做字典

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

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

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

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

© 2021 V2EX