当我试图解析时,我在双引号内有一个对象数组 对于数组它正在收到错误
未捕获的SyntaxError:意外的标记'
var test = "[{'key' :'D', 'value': 'Deceased Date'},{'key' :'R', 'value': 'Retired Date'},{'key' :'T', 'value': 'Terminated Date'}]";
JSON.parse(test);
我也尝试过以下代码。
$.parseJSON(test);
答案 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);