感谢您的光临!
我正在编写一些使用JSON服务的前端代码,该服务返回格式错误的JSON。具体来说,键没有用引号引起来:
{foo: "bar"}
我无法控制该服务,因此我要像这样纠正此问题:
var scrubbedJson = dirtyJson.replace(/(['"])?([a-zA-Z0-9_]+)(['"])?:/g, '"$2": ');
这给了我格式正确的JSON:
{“ foo”:“ bar”}
但是,当我致电时JSON.parse(scrubbedJson),仍然出现错误。我怀疑这可能是因为整个JSON字符串都用双引号引起来,但我不确定。
JSON.parse(scrubbedJson)
已经解决了-上面的代码工作正常。我在返回的JSON正文中有一个流氓单引号。我从那里得到了一切,现在一切都解析了。谢谢。任何帮助,将不胜感激。
这样的事情可能有助于修复json ..
$str='{foo:"bar"}'; echo preg_replace('/({)([a-zA-Z0-9]+)(:)/','$1"$2"${3}',$str);
输出:
{"foo":"bar"}
编辑:
var str='{foo:"bar"}'; str.replace(/({)([a-zA-Z0-9]+)(:)/,'$1"$2"$3')