【问题标题】:json_decode double quotes and commas returns NULLjson_decode 双引号和逗号返回 NULL
【发布时间】:2012-09-25 04:42:39
【问题描述】:

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

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

【问题讨论】:

  • 您最好修复任何生成非 JSON 文本的内容。如果正确构建,多余的引号将被转义,您可以按预期 json_decode() 它。
  • @MarcB 请看我的编辑。这是初始值
  • 我唯一的建议是解决问题或让创建它的人修复它:-)

标签: php json


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-13
    • 2011-12-09
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2018-10-25
    • 1970-01-01
    相关资源
    最近更新 更多