json_decode双引号和逗号返回NULL

时间:2012-09-24 20:19:42

标签: php json

我尝试使用json_decode来解码包含带逗号的单词和带双引号的单词的json:

{"wordsFont":"Times New Roman","nameList":["Overflow ,","Stack ""]}

json_decode失败所以我试图格式化字符串以使用以下函数来转义引号:

function fixDoubleQuotedJSON($broken_json)
{
   return str_replace('""','\""',$broken_json);
}

但它只是逗号和双引号位于单词末尾的情况。结果:

{"wordsFont":"Times New Roman","nameList":["Overflow \,","Stack \""]}

正确解码但我需要找到一种方法来做任何双引号和逗号的放置。有什么建议吗?

编辑:这是数据库中的初始值:

{\"wordsFont\":\"Times New Roman\",\"nameList\":[\"Overflow ,\",\"Stack \\\"\"]}

我无法将生成它的代码更改为数据库

1 个答案:

答案 0 :(得分:1)

我的问题是通过用urldecode()替换stripslashes()来解决的。 发生这种情况是因为有人以前使用过urlencode()。

$jsonFix = urldecode($json);
$json = json_decode($jsonFix, true);