gpt4 book ai didi

javascript - 使用 JSONStream 读取大型 JSON 文件

转载 作者:行者123 更新时间:2023-11-29 20:56:05 25 4
gpt4 key购买 nike

我一直在尝试使用 JSONStream 读取文件,但我在这方面没有太多经验,而且很难找到有关它的信息(教程、文档)。

我在这里的某个地方找到了这段代码:

var fs = require('fs'),
JSONStream = require('JSONStream');

var stream = fs.createReadStream('tst.json', {encoding: 'utf8'}),
parser = JSONStream.parse();

stream.pipe(parser);

console.log(parser);

parser.on('root', function (obj) {
console.log(obj); // whatever you will do with each JSON object
});

我试图将它与这样的 json 测试文件一起使用:

{
"colors": [{
"color": "black",
"category": "hue",
"type": "primary",
"code": {
"rgba": [255, 255, 255, 1],
"hex": "#000"
}
},
{
"color": "white",
"category": "value",
"code": {
"rgba": [0, 0, 0, 1],
"hex": "#FFF"
}
},
{
"color": "red",
"category": "hue",
"type": "primary",
"code": {
"rgba": [255, 0, 0, 1],
"hex": "#FF0"
}
},
{
"color": "blue",
"category": "hue",
"type": "primary",
"code": {
"rgba": [0, 0, 255, 1],
"hex": "#00F"
}
},
{
"color": "yellow",
"category": "hue",
"type": "primary",
"code": {
"rgba": [255, 255, 0, 1],
"hex": "#FF0"
}
},
{
"color": "green",
"category": "hue",
"type": "secondary",
"code": {
"rgba": [0, 255, 0, 1],
"hex": "#0F0"
}
}
]
}

我以为它会返回所有对象,但什么也没发生,它甚至没有进入“parser.on('root', function (obj)”)。我该怎么做才能完成这项工作?

最佳答案

root 事件已从 JSONStream 中删除。请改用 data 事件。 https://github.com/dominictarr/JSONStream/commit/97d973ac59d0e58748cec98ea87aae36e057d368

还应将 JSON 路径指定为 JSONStream.parse() 的参数。对于您的 JSON,它可以是 JSONStream.parse('colors.*')

所以把所有东西放在一起,应该是

var fs = require('fs'),
JSONStream = require('JSONStream');

var stream = fs.createReadStream('tst.json', {encoding: 'utf8'}),
parser = JSONStream.parse('colors.*');

stream.pipe(parser);

parser.on('data', function (obj) {
console.log(obj); // whatever you will do with each JSON object
});

关于javascript - 使用 JSONStream 读取大型 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49288779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com