为什么整个JSON响应数据都是字符串类型的?

时间:2013-12-25 12:07:40

标签: json apache laravel-3

我使用的是Laravel3 Response::eloquent

结果是JSON格式:{"id":"1"}。但是我希望结果如下:{"id":1} id作为数字,而不是字符串类型。

我使用apache而Content-Typeapplication/json; charset=UTF-8

问题仅发生在生产系统上。在我的localhost上,结果为{"id":1}

Apache或Laravel3是否有相关设置?

2 个答案:

答案 0 :(得分:2)

这很可能是由于PHP而导致使用错误的数据库驱动程序。从PHP 5.3开始mysqlnd是默认的数据库驱动程序,支持返回本机数据类型。

确保您使用MySQL的mysqlnd驱动程序。

另见How to get numeric types from MySQL using PDO?

答案 1 :(得分:1)

我同意@ user555。但它不是Laravel 3或Laravel 4问题,而是一个mysqlnd问题。

由于错误的mysql客户端库,您的提取表字段键入为字符串,然后json_encode()正在获取" string"作为" string"的输入和编码同样。

我在这里写了一篇关于我的经历的文章:

http://www.jmilan.net/posts/json-encode-data-type-errors-in-php 希望它有所帮助