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

2015-04-28 14:14:22 +08:00
 lomanyong

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

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

API 是对 WeCenter 的二次开发。

求助如何解决...

3822 次点击
所在节点    问与答
9 条回复
SoloCompany
2015-04-28 14:35:31 +08:00
为什么不是找你的同事问而是来这里问
b821025551b
2015-04-28 14:37:16 +08:00
PHP里如果不强制声明一下类型的话自然会自动转换的,解决办法就是在输出时加个(int)
b821025551b
2015-04-28 14:38:16 +08:00
不过话说回来,json数据不都是string么
angelhorn
2015-04-28 15:12:57 +08:00
你数据库的版本一定不对 可能是重装编译了PHP或者是MYSQL重装 也可能是怎么样。。
首先MySQL的版本应该大于5.2
再有最最最重要的 PHP.INI 里面看看是否开启了mysqlnd这个是最坑的。。只要是php.ini里搜索不到mysqlnd 那基本可以88了
neilwong
2015-04-28 15:44:32 +08:00
php里做个断点就能看到是哪里出问题了吧。。。
msg7086
2015-04-28 15:47:26 +08:00
@b821025551b 并不是。可以有数字类型。
pantaovay
2015-04-28 22:54:39 +08:00
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
2015-04-29 09:05:52 +08:00
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
2017-02-14 14:37:11 +08:00
请问这个问题解决了吗,我最近也遇到这个问题了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/186964

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX