JSON Stream Npm模块查询

时间:2019-05-08 10:11:20

标签: javascript arrays node.js json jsonstream

我正在处理大型JSON数据,并在Node.js中使用了Json流模块来获取值。

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

enter image description here

OpenProcess

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]中,我只能看到一大块(1个元素)JSON数据,而看不到全部5个元素。

console.log Stringify中,我看到console.log Specific Value。标签元素在那里显示日志,并且查询TypeError: Cannot read property 'labels' of undefined正在其他JSONPath测试人员使用。

即使使用JSON Stream模块后,如何解析并获取特定值?

理想情况下,我想做一个specificValue[0].metadata.labels.app循环并获取所有值。

for中,我得到console.log Parse and Stringify

1 个答案:

答案 0 :(得分:0)

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

与JSONStream.parse('items')匹配的每个元素都将通过流发送。因此,es.mapSync将被多次调用。实际上,“数据”变量将是第一次调用时的items [0],第二次调用时的item [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);
}));