我有一个字符串:
var jsonStr = "{"option":"option value","response":"response value","order":3}";
当我将它转换为像这样的json对象时:
var jsonObj = JSON.parse(jsonStr);
它提供SyntaxError
。但是如果用单引号声明字符串,如下所示:
var jsonStr = '{"option":"option value","response":"response value","order":3}';
工作正常。问题是字符串来自带双引号的服务器。我怎么解析这个?
答案 0 :(得分:3)
语法错误在JavaScript字符串文字中:
var jsonStr = "{"option:"option value","response":"response value","order":3}";
^ The error is here
它永远不会到达JSON.parse(jsonStr)
,脚本已经中止了。
您无法通过JavaScript修复它,因为脚本在抛出异常并死亡后无法重写自己的源代码。
您必须在服务器上修复此问题。
答案 1 :(得分:0)
错误是所谓的json字符串的写法。
var jsonStr = "{"option":"option value","response":"response value","order":3}"
javascript不会将您的jsonStr读取为字符串,而是在到达此行之前抛出错误var jsonObj = JSON.parse(jsonStr);
您也可以删除开始和结束报价。然后,在解析之前检查它是否已经是一个对象
var jsonStr = {"option":"option value","response":"response value","order":3};
var jsonObj = typeof jsonStr != 'object' ? JSON.parse(jsonStr) : jsonStr;