【发布时间】:2017-09-03 14:34:58
【问题描述】:
嗨,我正在尝试这样做
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)
}
});
}
});
我正在执行以下步骤:
- 从 url 获取数据
- 使用 zlib.gunzip 解压
- 将解码后的数据转换为字符串
- 替换所有换行符和喙语句
- 我正在尝试解析抛出错误的字符串
我在使用 JSON.parse 解析数据时出错,这是 github 的公开 dataset。我不知道我要去哪里错了,任何人都可以帮忙。
【问题讨论】:
-
你遇到什么样的错误?您是否尝试在解码之前打印出
json_string?它是有效的 JSON 吗? -
是的,我打印的字符串是正确的。我在位置 571 处收到解析错误意外令牌。即使我将该字符串保存到文件
-
在解析前使用调试器(如
node-inspector)检查json_string的内容。 (或者在这种情况下,console.log可能就足够了;通常调试器会更好,您可以更好地了解正在发生的事情。) -
“是的,我打印的字符串是正确的” 几乎可以肯定不是。 Node 中的
JSON.parse没有损坏。显示字符串。
标签: javascript json node.js github jzlib