某些后端不知道是因为太懒还是因为其他原因,对于 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。

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

8495 次点击
所在节点    程序员
75 条回复
back0893
2020-02-11 15:42:04 +08:00
哦.后端应该是 php 吧.叫 php 处理下,因为 php 里面的数组不会去区分 list 和 array 的差别
symeonchen
2020-02-11 15:51:34 +08:00
与同事协商,协商无果找领导,
与领导沟通,沟通无效换工作。
jugelizi
2020-02-11 15:54:17 +08:00
哈哈
又黑我大 phper 确实 php 在序列化 空对象和有数据的不一样 [] 和 {}
saucew
2020-02-11 16:04:18 +08:00
我猜你们的后端是 php
learnshare
2020-02-11 16:04:41 +08:00
a_list 直接开除吧,或者你辞职吧
loopback
2020-02-11 16:18:19 +08:00
碧池配狗,天长地久😂
huntcool001
2020-02-11 16:20:21 +08:00
这是你们技术部门管理的问题...
imnpc
2020-02-11 16:21:48 +08:00
这个看起来后端是 PHP,确实有些处理方法不太一样,需要沟通下
cmdOptionKana
2020-02-11 16:23:14 +08:00
你们不开会的吗,会议上摊开来当面说个明白。
imdavidyang
2020-02-11 16:25:30 +08:00
不是某些后端,是你们的后端,规范建设不严。
这种事情在对接接口时不沟通好需要打板子,当时不据理力争自己也得挨上 20 板子
pastgift
2020-02-11 16:27:53 +08:00
和是不是后端没关系,就是水平差,让他写前端搞不定会要求后端一个页面一个接口呢
cpdyj0
2020-02-11 16:30:47 +08:00
后端是不是不熟悉自己用的这个技术栈,感觉是序列化反序列化的锅,肯定不会是 Java 系的
Cbdy
2020-02-11 16:33:36 +08:00
后端换 Node,JS 一把梭,天下太平
cpdyj0
2020-02-11 16:38:23 +08:00
前后端一起换 Kotlin 吧,后端上 Kotlin/Native Kotlin/JVM 前端上 Kotlin/js (x
Alexhohom
2020-02-11 16:39:35 +08:00
最后两个没问题吧,没数据和有数据的 json 就应该是这样
ben1024
2020-02-11 16:42:44 +08:00
加一个数据输出层过滤解决这种输出类型无约束情况
ccraohng
2020-02-11 16:50:20 +08:00
我猜你们后端是 php
garlics
2020-02-11 16:53:19 +08:00
最后的只要不是同一个接口,问题就不大吧。a_list 这个就是水平问题了。
AppxLite
2020-02-11 16:56:37 +08:00
@Alexhohom
@garlics 就是同一接口才有这个问题,后面的例子看后面三条对比
rioshikelong121
2020-02-11 16:58:16 +08:00
沟通 不行自己加中间层转化。

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

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

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

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

© 2021 V2EX