javascript - 当你在 json 中有两行时,如何解决意外的 token 错误?

标签 javascript angularjs json

我有从服务器下载到文件中的内容,所以当我有多行 json 时,我无法下载文件,我得到了意外的 token ,我相信这个异常是因为换行符,我该如何解决这个问题?

来自服务器的数据

{"level":"info","message":"Test Log  messages"}
{"level":"info","message":"Test Log  messages"}
{"level":"info","message":"Test Log  messages"}

控制键

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

错误

angular.js:13708 SyntaxError: Unexpected token { in JSON at position 49
    at Object.parse (native)
    at fromJson

最佳答案

有效的 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);

在线演示 - https://plnkr.co/edit/H3tcxWqMUFep4n3LSt1C?p=preview

关于javascript - 当你在 json 中有两行时,如何解决意外的 token 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38207859/

相关文章:

javascript - 以更好的方式重新配置我的脚本

javascript - javascript范围和angularjs范围有什么区别

json - Splunk spath 与普通搜索性能

java - java中JSONArray无法转换为JSONObject

javascript - 警报框不打印变量值

在 WordPress index.html 中处理 PHP 的 JavaScript 导致加载问题,不匹配 fiddle 代码

javascript - location.search 不重定向

javascript - 如何使用动态评估的 angularjs 类并将其附加到 div?

json - JQuery 奇怪的语法

javascript - 指向我的服务器上的文件