各种第三方公司正在迫使我们使用非传统代码并产生非标准输出。
我们使用标准json_encode()
在JS / HTML中输出JSON变量,如下所示:
"custom":{"1":2,"2":7,"3":5}
现在他们告诉我们这不适合他们,他们需要这样:
"custom":{"1":"2","2":"7","3":"5"}
我可以强制PHP将引号括起来吗?在编码之前构建对象时可能使用强制转换(string)
主要是,我们需要与以下选项bitflag相反:
JSON_NUMERIC_CHECK (integer)
Encodes numeric strings as numbers. Available since PHP 5.3.3.
但我怀疑这是否存在。
答案 0 :(得分:3)
猜猜你需要自己解决这个问题。我想不出内置函数,但你可以编写自己的函数:
function stringify_numbers($obj) {
foreach($obj as &$item)
if(is_object($item) || is_array($item))
$item = stringify_numbers($item); // recurse!
if(is_numeric($item)
$item = (string)$item;
return $obj;
}
现在您可以使用json_encode(stringify_numbers($yourObject))
答案 1 :(得分:2)
如果您是从数组构建数据,则可以使用
array_map('strval', $data);
// upd
可能你需要称之为递归。
答案 2 :(得分:2)
使用(string)
投射属性似乎有效。
$custom = array(
'1' => (string)$property,
// ...
);