同事为了 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 条回复
EasonFan
2019-12-16 15:41:08 +08:00
A 的后期兼容性可能会出现问题,要考虑将来是要 IPV6 的情况,但是 A 有个好处,类似 map,可以直接取某个 ip 的使用情况。
Smilencer
2019-12-16 15:42:15 +08:00
A 是什么鬼
binux
2019-12-16 15:43:02 +08:00
@cloudyplain #14 就连 C++ 都能取 pair。这难道不是说明 java 垃圾吗?
sardine
2019-12-16 15:47:26 +08:00
感觉都是 json,没有对错,都能用,但是 B 可读性高,处理方便,尤其是这个 key"192.168.1.1"也要作为值处理的时候,A 的写法就会让我骂街了
amundsen
2019-12-16 15:49:37 +08:00
看到的第一个问题就是,你怎么才能方便地获取 ip 值,其他问题就不用讲了
netnr
2019-12-16 15:50:02 +08:00
@Cbdy 老哥,还是你骚
ily433664
2019-12-16 15:50:57 +08:00
肯定是 B 啊,如果是 A 的话,为什么不直接这样
[
["192.168.1.2", "10%", "25"],
["192.168.1.1", "25%", "10"]
]
bk201
2019-12-16 15:52:34 +08:00
用 a 然后序列化为 map 吗?
Cbdy
2019-12-16 15:52:57 +08:00
@cloudyplain 一般 json 库是哪个 json 库?
ccbikai
2019-12-16 15:53:25 +08:00
当然是 B 了,A 这样写会被喷吧
vimiix
2019-12-16 15:53:54 +08:00
根据 IP 拿数据的话,A 好,还去重。
B 没感觉哪里好。
shintendo
2019-12-16 15:56:08 +08:00
@aydd2004 查找啊
kedron
2019-12-16 15:58:00 +08:00
如果要遍历,把所有的 ip 取到,A 方案怎么做?
icyalala
2019-12-16 15:58:35 +08:00
以后需要保证有序,分页展示,A 怎么保证有序?
客户端用的时候,需要 Model 化,A 怎么把 ip 字段映射到 Model 里,重新遍历一遍吗?
keepeye
2019-12-16 16:00:08 +08:00
虽然我自己偶尔用 A,方便做交差运算,大部分场景还是 B,所以还是推荐 B 吧
Hoshinokozo
2019-12-16 16:00:25 +08:00
哈哈,本渣渣前端表示之前有一个任务后端就是用的 A 的方式,把我整懵了,最后那个项目前端逻辑变得极其复杂,我都不想再去碰了。。。另外我一直觉得 JSON 最好不要用数字做键名,因为那句话怎么说来着:‘代码主要是写给人看的,然后顺便给机器执行’,A 方式虽然后端可能会觉得在某些方面会比较简洁高效,但是对前端来说理解的成本会呈指数级上升。。( PS:哪位后端就是 PHP,我现在才知道原来 PHP 部分数组和对象的。。难怪我每次问他参数传啥的时候他都说传个 JSON,我:???)
kemikemian
2019-12-16 16:01:21 +08:00
看需求啊,给你中规中矩的遇到特殊需求也蛋疼,楼主不贴需求有主导嫌疑
ChenStyle
2019-12-16 16:07:20 +08:00
推荐 B
wu67
2019-12-16 16:08:42 +08:00
a 的话, 万一单机多 ip 呢...
515576745
2019-12-16 16:10:12 +08:00
b 的可维护性和拓展性都好,并不是怎么简单怎么来吧

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

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

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

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

© 2021 V2EX