我司后端接口是这样的,而我恰恰又是个 Android - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ponze
V2EX    Android

我司后端接口是这样的,而我恰恰又是个 Android

  •  
  •   Ponze 2019-07-30 11:15:57 +08:00 22523 次点击
    这是一个创建于 2332 天前的主题,其中的信息可能已经有所发展或是发生改变。

    16181564455780_.pic_hd.jpg

    你们公司遇到过吗?

    86 条回复    2019-08-01 12:48:56 +08:00
    lihongjie0209
        1
    lihongjie0209  
       2019-07-30 11:20:35 +08:00
    接口没法改的话自己做转化吧
    xiaozhu5
        2
    xiaozhu5  
       2019-07-30 11:22:58 +08:00
    好在我们公司后端没这么坑
    taogen
        3
    taogen  
       2019-07-30 11:25:14 +08:00 via Android
    用 0 1 2 来作 key 好奇葩啊
    zjsxwc
        4
    zjsxwc  
       2019-07-30 11:31:35 +08:00
    内容不固定的中文数据作为 json key,666
    zjsxwc
        5
    zjsxwc  
       2019-07-30 11:39:40 +08:00
    Baymaxbowen
        6
    Baymaxbowen  
       2019-07-30 11:39:57 +08:00
    提刀去沟通一下
    sunday1
        7
    sunday1  
       2019-07-30 11:45:32 +08:00
    就说这样你不高兴。让他以后别这样了
    micean
        8
    micean  
       2019-07-30 11:46:10 +08:00
    0,1,2 做 KEY 的,NGA 就是这样的
    中文 KEY 我原来还真用过,某个动态报表,实在懒得起个英文名……
    Telegram
        9
    Telegram  
       2019-07-30 11:46:22 +08:00   7
    为啥都喜欢往 loli.net 这个图床传图片,感觉很卡啊,而且经常挂掉
    qinfensky
        10
    qinfensky  
       2019-07-30 11:53:06 +08:00 via iPhone
    很久前我也遇到这样的后端,给我的 key 是不明确了,还说自己没办法,后端就是这样的,哈哈啊哈
    LLaMA2
        11
    LLaMA2  
       2019-07-30 11:54:55 +08:00
    这事问题不大,先和后端友好协商,同时也需要把项目负责人叫来确认,他们对此做法都无异议,你就写起来。你要保证你解析的方式绝对不会出现问题,他要是把 JSON 数据次序搞乱了,出现崩溃等各种不可预知的问题,你就告诉她为什么出现这种情况,当初他们可是点了头的。
    passerbytiny
        12
    passerbytiny  
       2019-07-30 11:57:26 +08:00   2
    楼上的,0 1 2 不是 key,是数组索引在 JSON 转换的时候被切换成了 KEY。这个转换方法我以前见过,但是忘了是啥原因了,貌似是某些语言没有数组,所以数组只能用这种形式传过去。

    如果你们后端是 Java 的话,请考虑建议老板开了他,Java 的 JSON 序列化框架从来不会默认转换成这种形式,能搞出这种形式,极有可能是开发人员使用了复制粘贴大法,并且既没有自审代码,也测试。

    然后纵表数据出数据库后,不转换成对象形式,也是极度不负责任的。
    liuxey
        13
    liuxey  
       2019-07-30 11:58:49 +08:00
    @Telegram #9 像 loli 这么毫无要求的图床已经不多了,主要是服务器不在国内所以有点慢,总比 imgur 访问不了和 sina 的 403 好
    Telegram
        14
    Telegram  
       2019-07-30 12:01:34 +08:00
    @liuxey #12 刚刚这个图一直刷不出来,挂代理也刷不出来,现在又好了。相当不稳定。
    感觉微博的图床还不错,不过现在好像加了防盗链,会检查 referer
    Mogugugugu
        15
    Mogugugugu  
       2019-07-30 12:11:39 +08:00
    动态报表,用户自定义的字段,要强制用户输入英文吗?大佬们给个解决方案哇 = =
    gz911122
        16
    gz911122  
       2019-07-30 12:26:59 +08:00
    我赌 5 毛钱 你们后端是 php
    reus
        17
    reus  
       2019-07-30 12:59:23 +08:00
    PHP ?数组和字典混用的垃圾
    colaman
        18
    colaman  
       2019-07-30 13:02:23 +08:00
    @passerbytiny 百分之百是 PHP,以前公司就是在这样,时不时冒出这种 0123,还跟我说没办法修复,笑死了
    zhzbql
        19
    zhzbql  
       2019-07-30 13:12:41 +08:00
    @colaman php 直接用 unset 销毁数组元素就会这样,unset 后索引数组实际转为关联数组,JSON 化后转 js 对象而不是数组
    sanggao
        20
    sanggao  
       2019-07-30 13:14:07 +08:00
    这个后端是 php 的 哈哈哈 因为我也是后端 php 的,以前碰到过同时写的,我都替客户端委屈
    yuann72
        21
    yuann72  
       2019-07-30 13:14:37 +08:00
    加个 array_values 的事,叫后端改下就行了
    wjh825998772
        22
    wjh825998772  
       2019-07-30 13:16:51 +08:00 via iPhone
    哈哈哈,PHP 背锅
    iweus
        23
    iweus  
       2019-07-30 13:25:59 +08:00
    不要问,问就是 PHP
    ganbuliao
        24
    ganbuliao  
       2019-07-30 13:33:02 +08:00   1
    phper 表示 写接口 从未输出过这种格式 :dog
    hhhsuan
        25
    hhhsuan  
       2019-07-30 13:37:23 +08:00 via Android
    0123 是代表次序吗?如果不是而只是随便起个名字,而你也不关心 key 只关心 value 的话,我觉得这样也可以凑活。
    killerv
        26
    killerv  
       2019-07-30 13:38:30 +08:00
    就是这群人败坏的 php
    virus94
        27
    virus94  
       2019-07-30 13:41:02 +08:00
    PHP 不背这个锅
    Erroad
        28
    Erroad  
       2019-07-30 14:02:40 +08:00
    三四千块的 php 后端?
    starsriver
        29
    starsriver  
       2019-07-30 14:05:25 +08:00 via Android
    @reus
    @gz911122
    拍黄片表示不背锅。凭什么这么污蔑拍黄片。明显是 node 的问题。
    wulongqiu
        30
    wulongqiu  
       2019-07-30 14:07:09 +08:00
    array_values
    cnoder
        31
    cnoder  
       2019-07-30 14:10:59 +08:00
    哈哈哈哈
    gz911122
        32
    gz911122  
       2019-07-30 14:21:43 +08:00
    @starsriver 目前来说 node 程序员对于接口约定还是比较好的
    毕竟大部分 node 都写过前端.不会接口搞得很....emmmm
    susucoolsama
        33
    susucoolsama  
       2019-07-30 14:26:58 +08:00
    array_values,这个是 php 的锅要接。
    madadimy
        34
    madadimy  
       2019-07-30 14:30:11 +08:00
    我们后端的 PHP 也喜欢这么写, 他不给我改成数组我就不往下写 正面刚
    HangoX
        35
    HangoX  
       2019-07-30 14:37:25 +08:00
    估计是不注意就这样了,提醒一下
    luozic
        36
    luozic  
       2019-07-30 14:43:25 +08:00 via iPhone
    这尼玛 key 得可以
    flyingghost
        37
    flyingghost  
       2019-07-30 14:55:05 +08:00
    后端是 PHP 无疑。
    这个问题不仅仅因为后端垃圾,还因为你们的技术经理、项目经理、架构师等相关角色缺失或者垃圾。
    plp
        38
    plp  
       2019-07-30 15:47:54 +08:00
    这种代码 出问题你很容易背锅.. 趁早澄清
    rrfeng
        39
    rrfeng  
       2019-07-30 15:51:00 +08:00
    既然用 0 1 2 当 key 为啥不用数组?
    真的有这样的设计的,比如 InfluxDB,返回数据全部格式都是数组套数组。只要定义没有歧义,容易理解就很 ok 了。
    xwxw
        40
    xwxw  
       2019-07-30 16:02:28 +08:00
    直接解析成多层 Map
    xpxw
        41
    xpxw  
       2019-07-30 16:33:27 +08:00   1
    谁 tm 说这是 php 的锅了???
    mostkia
        42
    mostkia  
       2019-07-30 16:54:30 +08:00   1
    @reus php 只是编程语言,我们暂且不讨论它是不是宇宙第一好的编程语言,但就其本身而言,它只是一个工具,编程语言再烂,也不是个人代码写的烂的理由,用的人是 shit,不管什么编程语言,写出来的代码都是 shit。代码习惯得靠自己,不要指望编译器做这些事情。接口写出来用中文 key,本身就是没有职业素养的表现。
    yymcct
        43
    yymcct  
       2019-07-30 16:55:45 +08:00
    笑抽...
    0x000007
        44
    0x000007  
       2019-07-30 16:57:02 +08:00
    这锅肯定是写 php 的背
    rookiewhy
        45
    rookiewhy  
       2019-07-30 17:01:28 +08:00
    对 php 部了解,为啥我之前的公司后端是 java,很少出现 json 格式的问题,现在的公司后端是 php,日常格式出问题?
    wyc130323
        46
    wyc130323  
       2019-07-30 17:01:30 +08:00
    我 php 背下这口锅了
    damaerguo912
        47
    damaerguo912  
       2019-07-30 17:04:22 +08:00
    谁 tm 说这是 php 的锅了???
    Airon
        48
    Airon  
       2019-07-30 17:08:58 +08:00
    这个后端菜和拍黄片有啥关系,别人拿刀砍你你怪刀么
    skiy
        49
    skiy  
       2019-07-30 17:32:27 +08:00
    没重置 key。如果是 PHP,得 sort 一下了。

    这个 "key" 有没有意义的先,如果是 ID 之类的,那也没什么问题。
    我猜是合并数据时用了这个 KEY 来作为合并的索引,最后又没重置。
    BCy66drFCvk1Ou87
        50
    BCy66drFCvk1Ou87  
       2019-07-30 17:35:16 +08:00 via Android
    锅从天上来
    jackcfan
        51
    jackcfan  
       2019-07-30 17:42:34 +08:00
    这后端绝壁是 PHP,我也遇到过合作伙伴是 php 连个 json 数组序列化惨不忍睹
    orqzsf1
        52
    orqzsf1  
       2019-07-30 17:44:39 +08:00
    ```
    // laravel 的 json 输出会乱序,加 key 确保顺序不会乱
    ```

    /滑稽
    1oNflow
        53
    1oNflow  
       2019-07-30 17:55:59 +08:00 via iPhone
    这是 json 里面的数组,Google firebase 就是这么显示的,后端用 node 直接按数组处理(.map)没问题。
    Soar360
        54
    Soar360  
       2019-07-30 17:59:01 +08:00
    壮哉,我大 PHP。
    ylw
        55
    ylw  
       2019-07-30 18:14:55 +08:00
    没人觉得 singleEelection multipleselection 这语法的问题吗 selection 第一个还拼写成 election
    TangMonk
        56
    TangMonk  
       2019-07-30 18:27:44 +08:00
    又黑我大 PHP
    littleangel
        57
    littleangel  
       2019-07-30 19:06:57 +08:00 via iPhone
    日常黑我最好的语言。
    vishun
        58
    vishun  
       2019-07-30 19:33:57 +08:00 via Android
    php 也不会出现这种啊,一般会是图中红色 data 数组这种。
    somebody
        59
    somebody  
       2019-07-30 23:34:29 +08:00 via Android
    使用 gson 自定义 adapter 可破。之前也设计过类似的 json,可参考这个项目 https://github.com/wuairc/heterogeneous-json-list。另外我也是 Android
    somebody
        60
    somebody  
       2019-07-30 23:35:21 +08:00 via Android
    somebody
        61
    somebody  
       2019-07-30 23:36:12 +08:00 via Android
    后面加了空格也不行,地址 https://github.com/wuairc/heterogeneous-json-list
    kooritea
        62
    kooritea  
       2019-07-31 00:07:09 +08:00 via Android
    楼主提刀过去被反杀了?倒是吱一声啊
    lonelygo
        63
    lonelygo  
       2019-07-31 02:55:55 +08:00
    #62 @kooritea 我觉得目前为止,你的回答最靠谱。
    janxin
        64
    janxin  
       2019-07-31 07:13:06 +08:00 via iPhone
    你们后端是 php
    qilishasha
        65
    qilishasha  
       2019-07-31 07:58:47 +08:00
    明显是数组自动转换而来的嘛……
    twoyuan
        66
    twoyuan  
       2019-07-31 08:52:01 +08:00 via Android
    看标题就知道一定有动态 key
    abcbuzhiming
        67
    abcbuzhiming  
       2019-07-31 09:00:40 +08:00
    @taogen 有的公司迷信这样能混淆数据,故意这么干
    imnpc
        68
    imnpc  
       2019-07-31 09:02:29 +08:00
    后端明显是 PHP
    数组做过 unset 操作的
    我一般下面 sort 下就正常了
    ugu
        69
    ugu  
       2019-07-31 09:16:35 +08:00
    笑死了,哈哈哈哈哈哈哈
    keepeye
        70
    keepeye  
       2019-07-31 09:23:58 +08:00
    $arr = ['a', 'b', 'c'=>'111'];
    echo json_encode($arr);


    // 肯定是这种情况 233333
    miaotaizi
        71
    miaotaizi  
       2019-07-31 09:24:51 +08:00
    有问题跟同事沟通啊, 难道你想让他在刷 v2 的时候 能看到这个帖子?
    polymerdg
        72
    polymerdg  
       2019-07-31 09:26:52 +08:00
    MMP 老子 居然每看懂 是啥毛病
    urmyfaith
        73
    urmyfaith  
       2019-07-31 09:41:02 +08:00
    哈哈,php 无疑.
    lwb
        74
    lwb  
       2019-07-31 10:21:06 +08:00
    这 nm 沟通的问题,跟 PHP 有毛关系,不背这个锅
    luopengfei14
        75
    luopengfei14  
       2019-07-31 10:29:58 +08:00 via iPhone
    @polymerdg 用数字表示 key …
    fbu11
        76
    fbu11  
       2019-07-31 10:39:24 +08:00
    遇到这种 PHP 就直接硬怼
    hyy1995
        77
    hyy1995  
       2019-07-31 10:41:18 +08:00
    让我想起了一年半之前,在郑州的时候,当时公司 PHP 后端就给我返这种数据,用数字当 key。。。
    jhdxr
        78
    jhdxr  
       2019-07-31 10:51:46 +08:00
    讲道理就算数组做过 unset,只要 unset 的不是中间的元素,也不会出现数字作为 key 啊。。。

    ```
    $a=[1,2,3];
    unset($a[2]);
    json_encode($a); // "[1,2]"

    $a=[1,2,3];
    unset($a[1]);
    json_encode($a); // "{"0":1,"2":3}"
    ```


    你们的后端到底做了什么神奇的操作
    wh1012023498
        79
    wh1012023498  
       2019-07-31 11:34:54 +08:00
    啥都不考虑 就告诉后端 用 array_values,现在的 PHP 坑的跟狗一样。。。
    NjcyNzMzNDQ3
        80
    NjcyNzMzNDQ3  
       2019-07-31 14:05:28 +08:00
    存在即合理,明明是人的问题,@reus 你估计是个语言黑或者引战的?
    knightlhs
        81
    knightlhs  
       2019-07-31 17:51:55 +08:00
    PHP 不背这个锅 鬼知道你们后端开发做了啥
    securityCoding
        82
    securityCoding  
       2019-07-31 17:56:11 +08:00
    这样写出来也蛮耗费精力的
    wo642436249
        83
    wo642436249  
       2019-07-31 18:01:30 +08:00
    666,无凭无据推给 php
    @wh1012023498
    @fbu11
    @hyy1995
    @jackcfan,除非只有 php 能实现这样的结构,这如果只有 php 能实现这样的结构,说明其他语言都是渣渣
    en20
        84
    en20  
       2019-08-01 09:15:40 +08:00
    c,我今天也碰到了,后端还正好是 php,banners 是轮播图数组,空的时候他传了个 "" 给我
    {
    "status": 1,
    "msg": "",
    "data": {
    "0": {
    "id": 3,
    "title": "123",
    "type_id": 3,
    "image_id": 496,
    "banners": "",
    caijihui11
        85
    caijihui11  
       2019-08-01 09:47:46 +08:00
    今天刚好遇到这种格式的返回,数组转化,强制设置了数字的 key , 找后端改一下数组格式吧,都是能接受的。
    sizhe
        86
    sizhe  
       2019-08-01 12:48:56 +08:00
    中文做 Key 确实不妥,至少改成 user_name 的英文吧。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     988 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 54ms UTC 19:21 PVG 03:21 LAX 11:21 JFK 14:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86