首頁 >後端開發 >php教程 >json返回数据格式的奇怪问题?

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

WBOY
WBOY原創
2016-06-06 20:47:551139瀏覽

在本地的环境中 使用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

回复内容:

在本地的环境中 使用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

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

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

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

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

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

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

<code class="lang-php"><?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));
</code>

输出结果:

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

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn