Javascript 当json中有两行代码时,如何解决意外的令牌错误?
我有从服务器下载到文件中的内容,所以当我有多行json时,我无法下载文件,我得到了意外的标记,我相信这个异常是因为新行字符,我如何解决这个问题 来自服务器的数据Javascript 当json中有两行代码时,如何解决意外的令牌错误?,javascript,angularjs,json,Javascript,Angularjs,Json,我有从服务器下载到文件中的内容,所以当我有多行json时,我无法下载文件,我得到了意外的标记,我相信这个异常是因为新行字符,我如何解决这个问题 来自服务器的数据 {"level":"info","message":"Test Log messages"} {"level":"info","message":"Test Log messages"} {"level":"info","message":"Test Log messages"} ctrl.js $scope.downloa
{"level":"info","message":"Test Log messages"}
{"level":"info","message":"Test Log messages"}
{"level":"info","message":"Test Log messages"}
ctrl.js
$scope.downloadFile = function(message){
DitFactory.getFile(message).then(function(response,$window){
var data = JSON.stringify(response.data);
var blob = new Blob([data], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(blob, 'text.txt');
console.log(response);
});
};
错误
有效的json响应应如下所示:
[
{"level":"info","message":"Test Log messages"},
{"level":"info","message":"Test Log messages"},
{"level":"info","message":"Test Log messages"}
]
更改服务器响应以返回有效值
否则,如果:
var response = '{"level":"info","message":"Test Log messages"}\n{"level":"info","message":"Test Log messages"}\n{"level":"info","message":"Test Log messages"}';
var items = response.split('\n');
items = items.filter(function(item) {
return item
})
.map(function(item) {
return angular.fromJson(item);
});
console.log(items);
在线演示-这些对象是否在一个数组中?如果是,则需要逗号来分隔它们。来自服务器的数据不是有效的JSON,因此无法将其解析为JSON。正如@developer033所说,您可能希望将这些对象放在JSON阵列中。我正在从服务器获取文件名和内容。感谢您的帮助,它让我更好地了解需要在何处进行修复。感谢againFor sure friend,请注意,如果您使用
$http
模块,并且当服务器返回有效的json响应(标题+内容)时,angular将自动将json字符串解析为对象。阅读$http
模块了解更多信息
var response = '{"level":"info","message":"Test Log messages"}\n{"level":"info","message":"Test Log messages"}\n{"level":"info","message":"Test Log messages"}';
var items = response.split('\n');
items = items.filter(function(item) {
return item
})
.map(function(item) {
return angular.fromJson(item);
});
console.log(items);