• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zjsxwc
V2EX  ›  程序员

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

  •  
  •   zjsxwc ·
    zjsxwc · Mar 4, 2025 · 4604 views
    This topic created in 615 days ago, the information mentioned may be changed or developed.
    因为产品需求变动,又急着上线,于是接口参数变成动态数量,

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

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

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

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

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

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

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

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

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

    如果参数过多 还是本地操作的话 确实和 2 个参数差距有点大
    发怒也是必然的 再者 前端是快 安卓还要打包 加固..

    所以外行领导内行就是这样 没有思考
    ramcasky
    ramcasky
    Mar 4, 2025
    22
    我最近也是遇到 JAVA 类型定的很死 就很奇怪 字符串的硬要前端给整型,整型的硬要我给字符串,想了想我说都给 string 比较通用,他说改不了,有点纳闷那么不灵活的吗
    meeop
    meeop
    Mar 4, 2025
    23
    不会用 json ,list ,甚至暴力写一个 xxxN1-xxxN100000 的结构去解析吗

    都 ai 时代了,只要逻辑能说清楚,代码多点也没啥
    southsala
    southsala
    Mar 4, 2025❤️3
    24
    你们这些野路子看着真的火大
    julyclyde
    julyclyde
    Mar 4, 2025
    25
    安卓又不是 C 语言,哪儿来的结构体这种东西?

    关键是 app 已经发出去了啊,你就算再改也是下一个版本了
    那已有版本的用户如果赖着不升级咋办?
    xiang0818
    xiang0818
    Mar 4, 2025
    26
    xxxN1 ,这种传参数,谁教你的
    zjsxwc
    zjsxwc
    OP
    Mar 4, 2025
    27
    @xiang0818 #26 历史遗留代码就这么写的啊, 我不是不想改成 `{"id": 1, "key": "xxx", "value": 123}` 来 代替 "xxxN1":123 ,就是原先代码已经这样了,我也懒得改,影响我下班。
    icyalala
    icyalala
    Mar 4, 2025❤️4
    28
    所以楼主不是野路子,楼主知道什么结构是合理的,但是因为 “懒得改,影响我下班” 而吧工作量转移给客户端
    liqingyou2093
    liqingyou2093
    Mar 4, 2025
    29
    使用数组,同 17
    BwNVlwSq
    BwNVlwSq
    Mar 4, 2025
    30
    确实抽象...
    soulflysimple123
    soulflysimple123
    Mar 4, 2025
    31
    碰到这样前端确实头大
    20015jjw
    20015jjw
    Mar 4, 2025 via iPhone
    32
    动态改名字是什么脑瘫操作
    IvanLi127
    IvanLi127
    Mar 4, 2025
    33
    安卓应该起一个新的后端服务做中间层代理服务,把数据重新序列化成数组格式,然后给运维部署到服务器上,然后再继续开发。
    sampeng
    sampeng
    Mar 4, 2025
    34
    不是技术问题。。。谁发飙谁去找产品说去。。关你啥事。。
    AlexBob
    AlexBob
    Mar 4, 2025
    35
    json 啊,转成 map 对象,java 要放飞还不简单,而且 android 里面各种序列化,比 JS 还多.

    spring 都支持 map 接参,只要不想后期维护,就用各种泛型接.

    前端有动态表单,我们有泛型接参就这么简单,逻辑都不用后台处理
    hm279
    hm279
    Mar 4, 2025
    36
    需求变动,给出修改时间,延迟上线,把锅甩回去给产品啊
    jingrui
    jingrui
    Mar 4, 2025
    37
    很多 javaer 只知道参数是 object ,不会处理 map 对象,菜
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2224 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 101ms · UTC 14:09 · PVG 22:09 · LAX 06:09 · JFK 09:09
    ♥ Do have faith in what you're doing.