强制json_encode创建字符串

时间:2013-10-30 15:42:57

标签: javascript php json

我必须将PHP数组json_encode编译为JavaScript数组。不幸的是,如果它包含整数而不是字符串,那么我使用的jQuery库将无法正确处理该数组。

大多数情况下,这将产生仅包含字符串的正确数组:

json_encode($data)

即使$ data只包含数字,我通常会得到这个

["3","7","8"]

有时候,我会得到这样的结果(注意零):

["9691","1792","26","1","4","15",0,"1"]

或者

[16171,15470,10390,7585]

(注意,这显然是不同的数据,以说明正在发生的事情)。我需要强制执行json_encode将数组值视为字符串。我知道有相反的选项JSON_NUMERIC_CHECK强制执行数字。等价物真的不存在吗?似乎我唯一的选择是在JavaScript端再次处理数组,尽管可能会在某种程度上打破对象的封装。

4 个答案:

答案 0 :(得分:4)

在数组中将它们定义为字符串,或者它是否来自其他地方:

$data = json_encode(array_map('strval', $data));

答案 1 :(得分:3)

如果有JSON_NUMERIC_CHECK的相反情况会很好,但它看起来并不像。

在编码之前,为什么不能确保php中的数据类型正确?

这可能意味着您必须手动将其强制转换为字符串...

答案 2 :(得分:0)

如果在函数调用中指定了一个标志,

json_decode()可以将大整数转换为字符串:

$array = json_decode($json, true, 512, JSON_BIGINT_AS_STRING)

答案 3 :(得分:0)

因为function JSON_NUMERIC_STRING($array){ foreach($array as $key => &$value){ if(is_array($value)){ $value = iterateMA($value); }elseif(is_numeric($value)){ $value = strval($value); } // add more conditions if needed... } return $array; } $array = JSON_NUMERIC_STRING($array); 没有相反的标志,我已经为此创建了一个函数 它接受一维和多维数组,并且可以添加条件来验证te数组的每个元素。

{{1}}