【发布时间】:2018-12-06 08:23:22
【问题描述】:
我有一个似乎无效的 json
{
"systemId": 4424,
"professional":88928,
"gate":532,
"mock":02,
"wish":"this",
"transaction_id":"eeases-323fasfse-asdfe33",
"channel": "API",
}
因此,它无法转换为 php 中的数组,我尝试了 json lint,它在 02 处显示错误。
经过一番研究,我知道json中从0开始的值是无效的。
当我用双引号“”将 02 括起来时,它已成功使用 json_decode 转换为数组。
所以我想知道,如何在所有假设 json 为字符串的情况下添加引号。
【问题讨论】:
-
你还有一个额外的逗号在末尾
"channel": "API",。所以恕我直言,最好尝试修复源而不是破解结果。 -
试试
$s = preg_replace('~":\s*\K0+(?=[1-9]\d*,)~', '', $s)。不过,正则表达式方法可能并不安全。 -
你想
preg_replace这个无效值吗?你会生成 JSON 文件吗?如果是这样,我会修复生成 JSON 的代码 -
02 with ["" was] successfully converted,how can I add quotes to [all numbers]你确定能把你带到你想要的地方吗? -
嗨@greybeard,是的,我知道“”在 02 左右就足够了,但我不想要具体案例的答案,我愿意学习新的东西。
标签: php arrays json string preg-replace