某些后端不知道是因为太懒还是因为其他原因,对于 json 的数据处理表示很崩溃

2020-02-11 15:38:38 +08:00
 AppxLite

首先,命名一踏糊涂,比如某些订单列表数据 A、B、C。

../api/a

{
	"code": 200,
    "msg": "ok",
    "a_list": {
    	...list
    }
}

../api/b

{
	"code": 200,
    "msg": "ok",
    "b_list": {
    	...list
    }
}

../api/c

{
	"code": 200,
    "msg": "ok",
    "c_list": {
    	...list
    }
}

因为这三个 api 接口用的都是相同的页面和布局,就因为这种脑残的 list 命名,前端会为此作出特殊的处理。

再举个例子:不知道某些后端对 json 是不是有什么误会,json 的数组和对象都分不清(在他们眼里,json 的对象和数组都是数组),这不是最恶心的,更恶心的是,同一个 api 接口同一个值,在不同的情况下,给你返回不同的数据类型。比如:

同一个接口:../api/data

某些情况是这样的:

{
	"code": 200,
    "msg": "ok",
    "data": {
    	...list
    }
}

某些情况又是这样的:

```json
{
	"code": 200,
    "msg": "ok",
    "data": []
}

再举个例子,明明不是数组,但是却要用[]来包一层,比如:
已知这个 data 的数据结构永远不是一个数组的。

```json
{
	"code": 200,
    "msg": "ok",
    "data": [{
    	...list
    }]
}

再举个例子,当只有一条数据的时候,是这样的:

{
	"code": 200,
    "msg": "ok",
    "data": {
    	...list
    }
}

当没有数据的时候是这样的

{
	"code": 200,
    "msg": "ok",
    "data": []
}

当有一条以上的时候又是这样的:

{
	"code": 200,
    "msg": "ok",
    "data": [{
    	...list
    }]
}

这些后端不知道是因为懒,还是因为自己的认知有限,每次和这样恶心的接口对接,作为一个前端的人来说,看到这样的接口,就像吃屎一样。和他们沟通不但不认同,还各种推脱说{}就是数组。。。

各位看官,你们觉得这是不是小题大做了?虽然通过各种处理,这些问题都不算啥,但是为何可以通过常识来解决的事,为何不把规则当规则呢?你用 json,就要遵循 json 的规则。而不是这就是 XXX。

各位前端小伙伴们,遇到这样的接口,你是怎么处理的?

8518 次点击
所在节点    程序员
75 条回复
Philippa
2020-02-11 16:58:27 +08:00
@Cbdy 哈哈哈哈哈 JS 统治世界万物
mcfog
2020-02-11 16:59:20 +08:00
怎么说呢,你要发帖吐槽这个,至少先搞清楚 markdown 语法,还有你自己的... list 这个 token 的语义
现在这样看上去感觉就是五十步笑百步
Philippa
2020-02-11 16:59:56 +08:00
提交接口时打回去,或者说用强类型协议,比如 graphql
luozic
2020-02-11 17:00:44 +08:00
规范啊,不规范的 json,公共 prase 库认么?
Juicpt
2020-02-11 17:04:40 +08:00
hhhh 看我这个,中文编程 hhhh 内心毫无波动
dilu
2020-02-11 17:11:45 +08:00
php 的确会这样 只能说规范一开始就没做好
跟语言无关 跟人有关
一般我都会跟客户端或者前端提前确认结构,怎么互相方便怎么来。
5bb864e1fc775087
2020-02-11 17:22:32 +08:00
接口返回格式已经确定是 code msg data 这 3 种
这两个接口要怎么处理比较好?
a 接口:
{
"code": 200,
"msg": "ok",
"data": {
xxx: true,
yyy: 123,
zzz: "zzz",
}
}

b 接口:
{
"code": 200,
"msg": "ok",
"data": [
'xxx',
'yyy',
'zzz',
]
}
sytnishizuiai
2020-02-11 17:29:27 +08:00
我也是 phper,之前做前后分离也碰到过,无论我给的 json 还是接收的 json 格式,我先写 api,如果前端处理不了或者不规范,我这直接统一改,很快的,即使需要改成很奇怪的格式来适应某个功能,我们前端还是外包靠微信交流的。(有时候他方便就他改了)

所以这是开发人员个人问题和交流问题了。
exploreXin
2020-02-11 17:29:56 +08:00
都在说后端谁谁谁怎么怎么样,是有人代码不规范,但这不是造成问题的的主要原因,真正原因是团队代码质量体系没跟上,每次代码写完有代码审查制度吗,没有时间代码审查,团队总该有个代码规范约束大伙吧,没有代码规范,开会的时候临时沟通下总该有吧,要是都没有,那代码质量不高也就不奇怪了。写这种水平不高的代码,有的人是懒,不负责任,而有的人是因为上家公司就是这么写的,现在还是这么写,并且现在的公司也没人把这事提出来当做紧要事情处理一下,一个制度完美的团队,应该是就算是 0 基础 0 规范的开发进到团队里面,也可以通过短时间跟上团队的规章制度,按照规范来工作,只是现实中大多都是创业小公司,能活下来就不错了,根本没有时间与精力去搞那些领导眼里“没用”的事情,要什么规范,能赚钱才是王道,两个后端给的东西都兼容不了,给你那么高工资干啥用的,如果遇到这种领导的公司环境,这个基本无解,秉持要么忍要么滚的原则,反正我遇到这种一般都是自己滚的,钱哪里都可以挣,但是技术水平,技术习惯这种个东西随着年月增长,是不可逆的,失去的时间不可能再追回来了,所以与其在不规范团队混日子拿工资,不如去个规范的团队,工资少拿一点也没什么。
fxxwor99LVHTing
2020-02-11 17:34:38 +08:00
这很明显后端有问题啊,和技术大佬反馈。
charlie21
2020-02-11 17:36:38 +08:00
所以接受哪些方面的教育才可以避免此类错误呢?
mdesi
2020-02-11 17:50:19 +08:00
找技术领导反馈问题啊
CYKun
2020-02-11 18:00:24 +08:00
@Juicpt #25 简单明了,我觉得没毛病
orzorzorzorz
2020-02-11 18:08:31 +08:00
如果只是命名不舒服,可以让公司大佬加个 schema,专门用来对应字段的中文名。
ck65
2020-02-11 18:11:33 +08:00
Tech Lead 有最终决定权,而且应该为这类设计负责。让他 /她知道你们的问题先。
fewok
2020-02-11 18:24:06 +08:00
这种槽吐的,真没深度。
mengzhuo
2020-02-11 19:59:27 +08:00
一看就是 PHP 的锅哈哈哈
jokeqf
2020-02-11 20:05:19 +08:00
人不行怪语言,真逗。就跟国足踢得不好怪教练一样。
springz
2020-02-11 20:14:03 +08:00
@Juicpt 我看了 5 分钟,实在想不出来应该怎么解析这个格式。
springz
2020-02-11 20:15:11 +08:00
曾经有一段时间,我拿到后端奇怪的 JSON,刚工作,不敢喷,自己默默的在入口写正则处理成正常 JSON。

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

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

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

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

© 2021 V2EX