Json Decode和Parse Error node.js

时间:2017-04-08 06:58:23

标签: javascript json node.js github jzlib

您好,我正试图这样做

firebasecrashreport.json

我按照以下步骤操作:

  1. 从网址
  2. 获取数据
  3. 使用 zlib.gunzip
  4. 解压缩
  5. 将解码后的数据转换为字符串
  6. 替换所有换行和喙声明
  7. 我试图解析抛出错误的字符串
  8. 我在使用const request = require('request'); const zlib = require('zlib'); const opts = { uri: 'http://data.githubarchive.org/2015-01-01-15.json.gz', encoding: null, }; request.get(opts, function(error, response, body) { if (!error) { zlib.gunzip(body, function(err, decoded) { if (err) { console.log(err) } else { var json_string = decoded.toString('utf-8').replace(/(\r\n|\n|\r)/gm, " ").trim(); var json = JSON.parse(json_string); console.log("SJON", typeof json) } }); } }); 解析数据时遇到错误,这是 github 的公开JSON.parse。我不知道我哪里出错了,任何人都可以帮忙。

1 个答案:

答案 0 :(得分:3)

该文件每行包含一个JSON对象。只是删除换行符不会产生有效的 JSON对象。相反,您可以在新行上拆分输入数据,并分别解析每一行:

zlib.gunzip(body, function(err, decoded) {
  if (err) {
    console.log(err);
  } else {
    let array = decoded.toString().trim().split(/\r?\n/).map(line => JSON.parse(line));
    ...
  }
});