同事为了 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 条回复
mmqmyy
2019-12-16 17:29:18 +08:00
json 肯定要保持 k-v pairs 的一致性啊,不然你得校验多少东西?
index90
2019-12-16 17:31:17 +08:00
LZ 最好讲讲场景吧?看数据结构去猜的话,应该是一个批量写入 IP 数据的接口吧。
我比较站 A,A 作为接口数据描述更清晰,明确 IP 唯一,接口的定义越清晰,功能越单一越好。与前端对接的时候更需要这样。
B 更通用,后端程序员要考虑更多,接口需要更多书面描述来向使用者讲述接口要求,例如你要加多一句,“IP 不能重复,否者报错,balabala”
WantSleep
2019-12-16 17:32:15 +08:00
客户端解析 A 巨麻烦,序列化框架也不能用了
sunmker
2019-12-16 17:32:46 +08:00
键值对
键一般就那么几个选项,哪有变量当键的……
fyxtc
2019-12-16 17:33:43 +08:00
看来两位同事工作都不是很饱和啊
SY413927
2019-12-16 17:39:21 +08:00
非特殊情况, 我选 B
假如不是我特别要求的情况下, 后端小伙伴给我返回了 A 结构, 他会被我打的很惨很惨

我是移动端。。。
TypeError
2019-12-16 17:40:56 +08:00
A 适合某些报表
大部分情况 B 够用
sdushn
2019-12-16 17:42:10 +08:00
客户端开发站 B,kv 写法解析起来很舒服,A 怎么解析?先解析字段名,放在 ip 字段里,再解析内容,有点反人类的逻辑。以上观点仅代表自己的想法
initer
2019-12-16 17:43:06 +08:00
移动端。 我选 B。
A 不是不能解析。就是麻烦。
rumingruyue
2019-12-16 17:43:28 +08:00
B 更好解析,用的更多。
A 为啥用大括号包一下?还有必要用数组吗?
sdushn
2019-12-16 17:44:18 +08:00
emm,大概明白 A 的写法了,似乎不太适用于前端及客户端开发,使用场景很窄,B 基本是客户端开发的通用写法
liuy1994g
2019-12-16 17:45:54 +08:00
写成 192.168.1.2Memory, 192.168.1.2HardDisk 岂不是更好?
cedoo22
2019-12-16 17:48:11 +08:00
所以。。。。前端 后端 移动端的 同学都会把 A 打死。。。。A 你还是自尽吧
ala2008
2019-12-16 17:53:15 +08:00
可以劝退 a:)
whypool
2019-12-16 17:54:23 +08:00
[
{
id:1,
name:'哈哈',
'哈哈':[
{a:123,c:345},
{a:555,c:666}
]
}
]

这样写会不会被砍死?
StarUDream
2019-12-16 18:08:45 +08:00
其实我想问一下,你们后端用的啥语言。
Mutoo
2019-12-16 18:16:21 +08:00
扁平化的结构更易于加工和组织,例如生成表,排序等。
字典不方便遍历,还需要手动转数组,并单独把 key 作为一个字段并入。
后端应该提供 B,而前端根据业务需要自行组织。
feigle
2019-12-16 18:18:19 +08:00
A:
如果知道 ip 的情况下,A 这种情况可以快速定位吧,只是多了个大括号。
B:
这种格式通用,不担心不关心业务。
在需要用 ip 定位的情况下,应该使用 A 格式,一般情况下用 B 格式
deplives
2019-12-16 18:18:34 +08:00
谁要是写 A 这样的给我用 看我不把家里拖鞋拿来招呼他
IssacTomatoTan
2019-12-16 18:20:19 +08:00
A 不能直接存 mongo

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

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

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

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

© 2021 V2EX