我正在处理大型JSON数据,并在Node.js中使用了Json流模块来获取值。
这是我的JSON结构,我必须从元数据和状态元素中解析并收集4或5个值。 JSON数组中有5个元素。
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
答案 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);
}));