3

我正在尝试使用 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 \\\"\"]}

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

4

1 回答 1

3

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

$jsonFix = urldecode($json);
$json = json_decode($jsonFix, true);
于 2012-09-24T20:34:23.990 回答