JSON 流 Npm 模块查询

JSON Stream Npm modules queries

我正在处理大量 JSON 数据,并在我的 Nodejs 中使用 Json 流模块来获取值。

这是我的 JSON 结构,我必须从元数据和状态元素中解析并收集 4 或 5 个值。 JSON 数组中有 5 个元素。

request({url:'ssss',verify:'False',headers:{'Authorization':'Bearer zzzz','Accept':'application/json','User-Agent':'zzz'}})
  .pipe(JSONStream.parse('items'))
  .pipe(es.mapSync(function (data) {
    console.log("Data "+data);
    console.log("Stringify "+ JSON.stringify(data));
   var specificValue = JSON.stringify(data);
    console.log("Specific Value"+ specificValue[0].metadata.labels.app);
    console.log("Parse and Stringify "+ JSON.parse(JSON.stringify(data)));
  })) ;

console.log Data 中我可以看到 5 个对象 [object Object],[object Object],[object Object],[object Object],[object Object]

console.log Stringify 中,我只能看到 JSON 数据的一个块(1 个元素),我看不到所有 5 个元素。

console.log Specific Value 我看到 TypeError: Cannot read property 'labels' of undefined。标签元素在那里显示日志并且查询 specificValue[0].metadata.labels.app 正在工作其他 JSON 路径测试器。

如何在使用 JSON 流模块后解析并获取特定值?

理想情况下,我想做一个 for 循环并获取所有值。

console.log Parse and Stringify 我得到 [object Object],[object Object],[object Object],[object Object],[object Object]

注释掉引发错误的行,您将看到 'items' 数组中的每个元素实际上都调用了函数(数据)。该错误会突然终止您的脚本。

每个与 JSONStream.parse('items') 匹配的元素都将通过流发送。因此,es.mapSync 将被多次调用。 "data" 变量在第一次调用时实际上是 items[0],在第二次调用时是 items[1] 等等。

尝试从每个项目中记录一些东西,例如使用这个:

request({url:'ssss',verify:'False',headers:{'Authorization':'Bearer zzzz','Accept':'application/json','User-Agent':'zzz'}})
  .pipe(JSONStream.parse('items'))
  .pipe(es.mapSync(function (data) {
    console.log(data.metadata.labels.app);
}));