在Chrome控制台中使用此代码我收到错误
SyntaxError: Unexpected token Q
我需要的是使用JSON.parse()转换对象中的输入。
知道如何修复此错误吗?
var input = 'QR|BEGIN:VEVENT\r\nSUMMARY:Event test 18 APrile\r\nDTSTART:20130418T085900Z\r\nDTEND:20130418T105900Z\r\nLOCATION:Class 18\r\nDESCRIPTION:Desc 18 APrile\r\nEND:VEVENT';
var output = input.split(/\r\n/);
output = "{" + output + "}";
alert(output);
var outputJson = JSON.parse(output);
console.log(outputJson);
答案 0 :(得分:2)
因为它根本不是JSON,所以不要将其解析为JSON。这是你如何做到的:
var obj = {};
input.split("\r\n").forEach(function(t){
var nv = t.split(':');
obj[nv[0]]=nv[1];
});
Demonstration(点击“使用JS运行”并打开控制台)
(请注意,此代码需要a shim due to forEach才能在IE8上运行)
答案 1 :(得分:1)
JSON.parse需要一个JSON格式字符串作为参数,并将其转换为JavaScript对象。您的变量input
不是JSON格式,因此是错误消息。
您可以参考http://en.wikipedia.org/wiki/JSON关于JSON格式字符串的外观及其构建方式。
答案 2 :(得分:0)
JSON.parse()
方法期望开始使用有效的JSON字符串。
这里的真正任务是从现有数据中生成这样一个有效的字符串,其中一种方法是:
var output = input.split(/\r\n/);
for (var i = 0; i < output.length; i++) {
var temp = output[i].split(":");
output[i] = "\"" + temp[0] + "\": \"" + temp[1] + "\"";
}
var strJSON = "{" + output.join(", ") + "}";
var outputJson = JSON.parse(strJSON);