Heim  >  Fragen und Antworten  >  Hauptteil

php - json返回数据格式的奇怪问题?

在本地的环境中 使用laravel3 返回的json数据都是正常的
例如{"id":1}

但把代码传到开发机后 返回的数据变成了
{"id":"1"}
就是所有的值全加上了双引号, 全变成了字符串类型, 非常奇怪,不知道是服务器apache的设置问题还是什么?

header 头部 已经是 Content-Type application/json; charset=UTF-8

本地环境 PHP5.4 mysql 5.6
开发机环境 PHP5.3 mysql 5.0

目前暂定问题 是 PHP5.3的链接mysql驱动问题 PHP从5.3开始才可以原生返回mysql字段类型,
http://stackoverflow.com/questions/1197005/how-to-get-numeric-types-from-mysql-using-pdo#answer-1197041

现在的问题是要安装 mysqlnd 在Centos6.4, 的PHP5.3上, 但默认包里面没有,不知道如何安装?
http://stackoverflow.com/questions/13159518/how-to-enable-mysqlnd-for-php

大家讲道理大家讲道理2750 Tage vor308

Antworte allen(5)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-04-10 14:39:18

    应该跟 apache 无关,是程序代码的问题吧,是不是在哪里把数字转换成字符串了?

    Antwort
    0
  • 怪我咯

    怪我咯2017-04-10 14:39:18

    可以在数据返回前再做下转换成整型的操作么

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-04-10 14:39:18

    自问自答,目前暂定为是Mysql驱动的事情 , 不知道有人遇到过吗?

    http://stackoverflow.com/questions/1197005/how-to-get-numeric-types-from-mysql-using-pdo#answer-1197041

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 14:39:18

    请贴出你的 PHP 版本,以及使用到 json_encode 时,所用参数的来源,因为很有可能你的数据来源是数据库的时候,数据库里定义的类型是字符串,于是在 json_encode 的时候,就变成了字符串。

    我用的 PHP 版本是 5.4.23,直接用硬编码做了 json_encode 的测试:

    <?php
    require_once 'zend_autoload.php';
    
    $json = [
        'name'   => 'caiknife',
        'age'    => 18,
        'height' => '175'
    ];
    
    Zend_Debug::dump(json_encode($json));
    
    Zend_Debug::dump(Zend_Json::encode($json));
    

    输出结果:

    string '{"name":"caiknife","age":18,"height":"175"}' (length=43)
    string '{"name":"caiknife","age":18,"height":"175"}' (length=43)
    

    Antwort
    0
  • PHP中文网

    PHP中文网2017-04-10 14:39:18

    你是在返回的时候将JSON对象toString了么?

    Antwort
    0
  • StornierenAntwort