V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ponze
V2EX  ›  Android

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

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

    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 无疑。
    这个问题不仅仅因为后端垃圾,还因为你们的技术经理、项目经理、架构师等相关角色缺失或者垃圾。
    Vtwoguest
        38
    Vtwoguest  
       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 来作为合并的索引,最后又没重置。
    HuasLeung
        50
    HuasLeung  
       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   ·   实用小工具   ·   984 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:46 · PVG 04:46 · LAX 12:46 · JFK 15:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.