在JavaScript中将双qouted字符串转换为JSON

时间:2015-07-28 10:14:34

标签: javascript json

我有一个字符串:

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}';

工作正常。问题是字符串来自带双引号的服务器。我怎么解析这个?

2 个答案:

答案 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;