我有一个 PHP 脚本,它输出 JSON 数据,这些数据由浏览器中的 Javascript 以及 iPhone 和 Android 应用程序解析。
之前我发现PHP在将数组数据转换成JSON的时候,会把所有的数字值变成字符串,用双引号表示。因此,例如,"id" : 1
将变为"id" : "1"
. 这似乎混淆了一些接收 JSON 数据的 Javascript 函数,所以我在 PHP 中的 JSON 上运行了这个正则表达式,以确保数字不会变成字符串:
$JSONOutput = preg_replace('/"(-?\d+\.?\d*)"/', '$1', json_encode($JSONOutput));
但是,这也具有从键和值中删除双引号的效果,因此1 : "first value"
变为"1" : "first value"
. 事实证明这是一个问题,因为如果 JSON 键不是字符串,那么接收数据的 iPhone 应用程序就会抱怨。
所以,我想要做的是确保 JSON 中的所有值都保留为整数,但所有键都被制成字符串。有没有一种方法可以只在值上运行我上面的正则表达式?或者任何其他可以给我类似结果的过程?