>  기사  >  백엔드 개발  >  json返回数据格式的奇怪问题?

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

WBOY
WBOY원래의
2016-06-06 20:47:551130검색

在本地的环境中 使用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으로 문의하세요.