V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
lomanyong
V2EX  ›  问与答

[求助] PHP API 返回的 JSON 数据,所有 int 类型突然都变成了 string 类型了怎么办?

  •  
  •   lomanyong · Apr 28, 2015 · 4420 views
    This topic created in 4024 days ago, the information mentioned may be changed or developed.

    服务器环境应该也没有动过,数据库数据类型没有修改。

    之前一直是正常返回 int 类型,今天突然都自动变成 string 了,客户端因为没有做判断崩溃率骤增。

    API 是对 WeCenter 的二次开发。

    求助如何解决...

    9 replies    2017-02-14 14:37:11 +08:00
    SoloCompany
        1
    SoloCompany  
       Apr 28, 2015   ❤️ 1
    为什么不是找你的同事问而是来这里问
    b821025551b
        2
    b821025551b  
       Apr 28, 2015
    PHP里如果不强制声明一下类型的话自然会自动转换的,解决办法就是在输出时加个(int)
    b821025551b
        3
    b821025551b  
       Apr 28, 2015   ❤️ 1
    不过话说回来,json数据不都是string么
    angelhorn
        4
    angelhorn  
       Apr 28, 2015
    你数据库的版本一定不对 可能是重装编译了PHP或者是MYSQL重装 也可能是怎么样。。
    首先MySQL的版本应该大于5.2
    再有最最最重要的 PHP.INI 里面看看是否开启了mysqlnd这个是最坑的。。只要是php.ini里搜索不到mysqlnd 那基本可以88了
    neilwong
        5
    neilwong  
       Apr 28, 2015
    php里做个断点就能看到是哪里出问题了吧。。。
    msg7086
        6
    msg7086  
       Apr 28, 2015
    @b821025551b 并不是。可以有数字类型。
    pantaovay
        7
    pantaovay  
       Apr 28, 2015
    string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

    有一个option是JSON_NUMERIC_CHECK

    Encodes numeric strings as numbers. Available since PHP 5.3.3.
    free9fw
        8
    free9fw  
       Apr 29, 2015
    function str2int($data, $transformColumn = []) {
    $rs = [];
    array_walk($data, function($item, $key) use(&$rs, $transformColumn){
    array_walk($item, function($iv, $ik) use(&$rs, $key, $transformColumn){
    $rs[$key][$ik] = !in_array($ik, $transformColumn) ? $iv : $iv + 0;
    });
    });
    return $rs;
    }
    DEATHKEL
        9
    DEATHKEL  
       Feb 14, 2017
    请问这个问题解决了吗,我最近也遇到这个问题了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   798 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 20:11 · PVG 04:11 · LAX 13:11 · JFK 16:11
    ♥ Do have faith in what you're doing.