同事为了 JSON 怎么写吵起来了!请各位断案!

2019-12-16 14:42:11 +08:00
 codeismylife

A 同事:

[
	{
		"192.168.1.2": {
			"Memory": "10%",
			"HardDisk": "25"
		},
		"192.168.1.1": {
			"Memory": "25%",
			"HardDisk": "10"
		}
	}
]

B 同事:

[
	{
		"ip": "192.168.1.1",
		"Memory": "10%",
		"HardDisk": "25"
	},
	{
		"ip": "192.168.1.2",
		"Memory": "25%",
		"HardDisk": "10"
	}
]

我认为 B 写的是对的,但是不知道怎么科学地反驳 A。A 这么写好吗?不好的话 A 的问题在哪儿呢?

32369 次点击
所在节点    程序员
342 条回复
reus
2019-12-16 15:13:55 +08:00
如果需要服务器端排序,那肯定 B
buffzty
2019-12-16 15:14:14 +08:00
我们会写 b, 然后实际用的时候会再 map 一遍生成一个 ipMapDetail
a 方式不通用,万一 2 个 ip 一样呢.万一有些 ip 是 0.0.0.0 呢
Jealee
2019-12-16 15:17:01 +08:00
前后端的数据交互更倾向 B 一些。另外 A 应该不是个数组吧,一般 A 适合一些特殊的场景。比如说维护一个聊天室的用户对象,利用 key 的唯一性,用 uid 作为 key,userinfo 作为 value。利用 hasOwnProperty 判断 key 是否存在,同时存取时也十分方便( obj[uid])。用数组的话则更加麻烦一些
DamonLin
2019-12-16 15:18:16 +08:00
肯定是 B 了
Raymon111111
2019-12-16 15:20:54 +08:00
A 是什么鬼
qinfensky
2019-12-16 15:22:03 +08:00
选 B,我见过几个同事写 A,我都忍不了,Key 不固定,要取值还要先遍历,烦。
wendellup2018
2019-12-16 15:22:23 +08:00
没见过 a 这么约定的, java 解析 json 都直接定义一个实体对象让 fastjson 之类的自动解析。
定义成 a 这样,只能手动解析了。
yanlaz
2019-12-16 15:22:52 +08:00
A 是 PHP 后端?
lagoon
2019-12-16 15:23:43 +08:00
选 B 无可争议。

换个角度,A 既然要把数据直接放到 key 的位置,那干嘛还要 Memory、HardDisk ?
既然不要 key,那就全不要。既然要 key,那就要。

想要就要,不想要的部分就不要,未免太任性了吧?

从一致性的角度来说,都不好吧。
wangyzj
2019-12-16 15:24:40 +08:00
这完全是看需求
大家默认理解只是一个列表
肯定是 B
dajj
2019-12-16 15:26:13 +08:00
都行,谁负责谁决定
CommandZi
2019-12-16 15:27:01 +08:00
A 大概是 PHPer
amon
2019-12-16 15:31:24 +08:00
找几个客户端同学去教训一下 A
aydd2004
2019-12-16 15:34:26 +08:00
大家都选 b ?如果只知道 ip,想调用里面的某个字段怎么办
angryfish
2019-12-16 15:35:12 +08:00
用这样的思维,A 类似返回了一个 Map,B 类似返回了一个 List
wuwukai007
2019-12-16 15:37:58 +08:00
A 类似 {200:{message:success}}
B >> {code:200,message:success}
arthas2234
2019-12-16 15:39:09 +08:00
用 A 就别想着用 Java 来搞了
superarm
2019-12-16 15:39:17 +08:00
作为一个三年前端,我比较支持 B,简洁好用
wvitas
2019-12-16 15:40:25 +08:00
A 其实也可以解析,但是吧,从方便的角度来说,我支持 B
mayuko2012
2019-12-16 15:40:38 +08:00
有一个问题:如果想获取 192.168.1.2 的 disk 值,只能循环查找吗?

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

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

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

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

© 2021 V2EX