繁体   English   中英

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

[英]Uncaught SyntaxError: Unexpected token '

当我尝试解析为数组时,我在双引号内有一个对象数组,这是一个错误

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

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

我也尝试过下面的代码。

$.parseJSON(test);

字符串中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,或者是对象或数组。 这些结构可以嵌套。

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

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

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

嘿,很简单的解决方法。

数组周围没有引号,只是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])
}

试试看(如果您不能更改测试字符串,如果它来自外部)

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM