Javascript SyntaxError:意外的令牌Q

Javascript SyntaxError:意外的令牌Q,javascript,Javascript,在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

在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);
因为它根本不是,所以不要将它解析为JSON。以下是您如何做到这一点:

var obj = {};
input.split("\r\n").forEach(function(t){
  var nv = t.split(':');
  obj[nv[0]]=nv[1];
});
(点击“用JS运行”并打开控制台)

(请注意,此代码需要在IE8上运行)

因为它根本不是,所以不要将其解析为JSON。以下是您如何做到这一点:

var obj = {};
input.split("\r\n").forEach(function(t){
  var nv = t.split(':');
  obj[nv[0]]=nv[1];
});
(点击“用JS运行”并打开控制台)


(请注意,此代码需要在IE8上运行)

JSON.parse需要一个JSON格式字符串作为参数,并将其转换为JavaScript对象。您的变量
input
不是JSON格式,因此会显示错误消息


您可以参考关于JSON格式字符串的外观及其构建方式的信息。

JSON.parse需要JSON格式字符串作为参数,并将其转换为JavaScript对象。您的变量
input
不是JSON格式,因此会显示错误消息

您可以参考关于JSON格式字符串的外观和构建方式。

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);
var-output=input.split(/\r\n/);
对于(变量i=0;i
.

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);
var-output=input.split(/\r\n/);
对于(变量i=0;i

.

这根本不是JSON。输入字符串缺少的不仅仅是有效的JSON。
JSON.parse()
并不像您可能期望的那样凭空创建JSON,它只是将格式为JSON的原始字符串解析为可使用的实际对象。它希望字符串是有效的JSON,而在您的例子中,正如其他人已经提到的,它不是。感谢您的解释,如果您将其作为答案发布,我将很高兴接受它。这根本不是JSON。您的输入字符串缺少的不仅仅是有效的JSON。
JSON.parse()
并不像您可能期望的那样凭空创建JSON,它只是将格式化为JSON的原始字符串解析为可以使用的实际对象。它希望字符串是有效的JSON,而在您的情况下,其他人已经提到了,这不是。感谢您的解释,如果您将其作为答案发布,我将很乐意接受。为什么要做这个复杂的更改,并将其解析为JSON,而直接解析字符串更简单?@dystroy一个循环,而不是那么复杂。只是希望对原始请求进行最小的更改,在本例中,无论出于何种原因,原始请求使用的是
JSON.parse()
。当直接解析字符串更简单时,为什么要进行复杂的更改并将其解析为JSON?@dystroy一个循环,而不是那么复杂。只希望对原始请求进行最小的更改,在本例中,无论出于何种原因,原始请求都使用
JSON.parse()