同事为了 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 的问题在哪儿呢?

32991 次点击
所在节点    程序员
342 条回复
xinjiang
2019-12-16 17:06:23 +08:00
只是 A 外面的那个数组是完全没必要
deepred
2019-12-16 17:07:28 +08:00
A 有必要用数组吗?
linxl
2019-12-16 17:08:59 +08:00
A 这种客户端解析会不会很麻烦啊?
sonxzjw
2019-12-16 17:10:53 +08:00
数据结构服务于使用场景,没有场景作为前提,这样判断太武断了。如果你非要说哪个好的话
EastLord
2019-12-16 17:12:27 +08:00
我觉得要看使用场景,都没错
IamUNICODE
2019-12-16 17:13:12 +08:00
对接手机端肯定选 B,对接网页前端随便吧(个人觉得 B 更好)
back0893
2019-12-16 17:16:22 +08:00
关 php 啥子事,
java 或者 java 都能写出啊.
qzhai
2019-12-16 17:16:23 +08:00
b 永远都是对的 使用的时候 可以吧 B 转 成 A。。。
burnings0506
2019-12-16 17:16:24 +08:00
A 连数组和对象都没搞明白。
index90
2019-12-16 17:19:39 +08:00
LZ 题目是不是写错了啊?
A 和 B 提供的数据结构说的不是一回事啊。A 的数组每个元素包含多个 IP 数据,而 B 的数组每个元素是一个 IP 数据,那么他们各自的数组分别代表什么?
shintendo
2019-12-16 17:20:26 +08:00
@qwerthhusn 别闹,前端才不想要 A 这么难用的结构
hbolive
2019-12-16 17:20:56 +08:00
一般情况下当然是 B 科学,A 以 IP 作为键值可能适合于某些特殊情况,但是为啥多一层{}?
lonelymarried
2019-12-16 17:23:14 +08:00
如果 ip 是唯一的,那么 a 的这么写也可以
swulling
2019-12-16 17:24:03 +08:00
[
{
"192.168.1.2": {
"ip": "192.168.1.1",
"Memory": "10%",
"HardDisk": "25"
},
"192.168.1.1": {
"ip": "192.168.1.1",
"Memory": "25%",
"HardDisk": "10"
}
}
]

完美
chent
2019-12-16 17:25:15 +08:00
看使用场景, A 作为 map 使用没必要套进数组.
有时候 A 根据 ip 取数据与判断什么的很方便, B 作为列表展示比较方便.
如果 B 要用元素内的 ip 做 k 取数据, 那就要转换回 A 的方式会更高效.
接口是为使用方服务的, AB 吵其实没意义, 要看谁用数据, 怎么用.
wodexiaogou
2019-12-16 17:25:26 +08:00
我为啥觉得 A 更好啊,更好理解,也更查询操作,比如获取某个服务器资源时,用 A 更方便,删除时也方便操作
kkjinping
2019-12-16 17:26:17 +08:00
选择 B 操作。
nomemo
2019-12-16 17:27:18 +08:00
看了楼上的回复,学习,总结了几点不用 A 的理由

1. key 不建议做可变值;
2. 多了一层解析嵌套;
3. 对象的含义发生了变化;
llcfays
2019-12-16 17:28:07 +08:00
不用担心,客户端同学会把 A 喷死的。
HongJay
2019-12-16 17:28:47 +08:00
哪个后台敢写 a 看我不打死他

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

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

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

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

© 2021 V2EX