因为产品需求变动,又急着上线,于是接口参数变成动态,于是安卓开发发怒说改不了

63 天前
 zjsxwc
因为产品需求变动,又急着上线,于是接口参数变成动态数量,

原先接口发送和返回的数据是 {"xxxN1": 123, "xxxN2":123} 2 个参数,

现在产品经理改需求,说用户反馈很好,但要把 2 个这种参数限制,变成动态最多会有 500 多个,

于是我最简单最快的方式是把接口参数改成 {"xxxN1": 123, "xxxN2":123,..., "xxxN500":123, "xxxN501":123},其中 "xxxNn"没有的数据可以不传。

这么改了后,安卓开发者发怒说改不了,但前端很容易改几分钟就兼容上线了。

可能安卓是写死了结构体,不能动态?

所以安卓应该如何修改?
3156 次点击
所在节点    程序员
37 条回复
duhb
63 天前
500 个参数?那得写多大的数据模型,model 里的参数都是一一对应的,否则 json 解析框架解析不成功,转换不成 model 实体。
nice2cu
63 天前
参数太多了 不是很合理的 后端咋知道 n 代表那个业务字段 估计还是手动维护
asdhak
63 天前
产品经理提需求就行了,咋还指导上接口了?那不就外行指导内行了嘛
kyuuseiryuu
63 天前
让产品直接说希望这么实现的目的是啥。什么业务问题必须要这样的实现?

产品经理又不是架构师,只需要描述业务需求,不应该染指软件设计。
woodfizky
63 天前
这种应该是把参数解析成了模型,这个模型是静态的。
如果要改成动态的估计用 Map 可以支持?但是数据类型不确定,就算确定可能逻辑要重新写一些。
Lisa9527
63 天前
这就回归到开发设计的问题了
nekomiao
63 天前
直接 map 或者 jsonobject 接收了再解析 key 不就行,写起来是丑了点有啥改不了的。分分钟就改完了,要不是他菜要不是他懒
fredweili
63 天前
改一下这个结构,用两个数组,keys 和 values ,传输时候用逗号什么分割序列化,再加一个 count 校验
这也比这么大的 map 好看多了,变来变去的 kotlin 不好写 model
luwies
63 天前
不应该改成数组存放这 500 个参数吗?我也会说改不了。。。
walker748
63 天前
@nekomiao 你可真是个小聪明啊👀
lw10645
63 天前
改不了,谁家好人这么写代码
fregie
63 天前
谁着急上线谁想办法呗
internelp
63 天前
要不然这么改

```
{
"count": 2,
"data": [
{
"key": "xxx1",
"value": "v1"
},
{
"key": "xxx2",
"value": "v2"
}
]
}
```
han3sui
63 天前
我们之前也是,因为 js 的兼容性太好,导致后端写接口会放飞。

然后多端上线的时候,遇到安卓、ios 这种数据类型要求比较严格的,经常会冲突。
FireKey
63 天前
我之前接过一个接口,每个状态的结构都不一样,那才是真奇葩
xz410236056
63 天前
@internelp 一个效果,只要用 ORM ,你就得把 key 转成固定的属性,难道一个类 500 个属性吗。这玩意应该用数组。如果每个 key 不一样,那也应该是数组里面套字典
qxdo1234
63 天前
写成动态数组去维护比较好一点吧,[{key_name:xxx, key_value:xxx, key_type:xxx}] 这样子的,这样前端后端解偶了,后续也不会遇到参数变更,两边都要改接口,只要两边各自去写自己的逻辑就好了。
guanhui07
63 天前
我跟 13 楼的一样
kookpua
63 天前
直接用 json 吧
jiahailiang22
63 天前
17 楼 正解

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

https://yangjunhui.monster/t/1115663

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

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

© 2021 V2EX