从5.3.3之前的json_encode中删除引号

时间:2014-04-23 21:40:24

标签: php json

使用json_encode时,它会烦人地自动将int键转换为字符串。例如,如果您有一个数组:

$a = array(); 
$a[12] = 15;
echo json_encode($a);
{"12":15} //notice the quotes around 12

搜索SO后,解决方案是使用

json_encode($array,JSON_NUMERIC_CHECK)

但是,这仅适用于php> 5.3.3。我坚持使用的生产服务器使用的是5.3.2。

当然有一个解决方法吗?

1 个答案:

答案 0 :(得分:0)

所以这里的问题是你基本上把你的方法混合到数据结构中,而json_encode()试图最好地猜测如何解释你的数组,因为在JSON中,没有这样的概念基于非零的数字索引数组。

例如,如果您有一个带有连续数字序列的从零开始的数字数组,json_encode()会将这个格式编码为数字索引数组:

[value1, value2, ...]

由于您没有从零开始的数组,因此您的数据结构将被解释为对象结构,并给出格式为字符串键(JSON中对象的唯一可用键类型):

{"key", value}

所以看起来你需要决定你真正想要在你的阵列中代表什么。您是否只需要基于数字的数组,或者您是否需要对象编码。