未捕获的SyntaxError:意外的令牌'

时间:2015-12-18 10:04:40

标签: javascript jquery asp.net

当我试图解析时,我在双引号内有一个对象数组 对于数组它正在收到错误

  

未捕获的SyntaxError:意外的标记'

var test = "[{'key' :'D', 'value': 'Deceased Date'},{'key' :'R', 'value': 'Retired Date'},{'key' :'T', 'value': 'Terminated Date'}]";
JSON.parse(test);

我也尝试过以下代码。

$.parseJSON(test);

4 个答案:

答案 0 :(得分:2)

对于字符串,JSON中没有单引号。 您应该这样做:

var test = '[{"key" :"D", "value": "Deceased Date"},{"key" :"R", "value": "Retired Date"},{"key" :"T", "value": "Terminated Date"}]';
JSON.parse(test);

在JSON中,只有双引号有效。

您可以在JSON.org

上找到标准
  

值可以是 双引号 中的字符串,也可以是数字,或者为true或   false或null,或对象或数组。这些结构可以   嵌套。

换句话说,单引号中没有字符串。

答案 1 :(得分:2)

单引号不能生成有效的json字符串。它们应该用双引号括起来:

var test = '[{"key" :"D", "value": "Deceased Date"},{"key" :"R", "value": "Retired Date"},{"key" :"T", "value": "Terminated Date"}]';
JSON.parse(test);

答案 2 :(得分:0)

嘿,相当简单的修复。

你的数组周围没有引号只是var x = [数组中的东西] 它已经是一个对象,你不需要将它解析为json。 要查看它只是循环遍历您的数组。

var test = [
        {'key' :'D', 'value': 'Deceased Date'},
        {'key' :'R', 'value': 'Retired Date'},
        {'key' :'T', 'value': 'Terminated Date'}
      ];

 for(var i = 0; i < test.length; i++){
  console.log(test[i])
}

答案 3 :(得分:0)

试试这个(如果你不能改变测试字符串,如果它来自外部源)

var test = "[{'key' :'D', 'value': 'Deceased Date'},{'key' :'R', 'value': 'Retired Date'},{'key' :'T', 'value': 'Terminated Date'}]".split('\'').join('\"');
JSON.parse(test);

只需在测试.split('\'').join('\"');结束时添加此内容,将'替换为"

或使其更简单

var test = "[{'key' :'D', 'value': 'Deceased Date'},{'key' :'R', 'value': 'Retired Date'},{'key' :'T', 'value': 'Terminated Date'}]";
test = test..split('\'').join('\"');
    JSON.parse(test);