Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JSONStream.Parse解析整个对象_Javascript_Node.js_Stream_Jsonstream - Fatal编程技术网

Javascript 使用JSONStream.Parse解析整个对象

Javascript 使用JSONStream.Parse解析整个对象,javascript,node.js,stream,jsonstream,Javascript,Node.js,Stream,Jsonstream,我有一个传入的JSON数据对象结构,如下所示: { foo: 3, bar: [ { key:value }, { key:value } ] } let obj = {foo:{}, bar:[]} const fooStream = JSONStream.parse(["foo", t

我有一个传入的JSON数据对象结构,如下所示:

{
    foo: 3,
    bar: [
             {
                 key:value
             },
             {
                 key:value
             }
         ]
}
let obj = {foo:{}, bar:[]}

const fooStream = JSONStream.parse(["foo", true]);
fooStream.on("data", (data)=>{obj.foo = data;})

const barStream = JSONStream.parse(["bar", true]);
barStream.on("data", (data)=>{obj.bar.push(data);})

_some_stream.pipe(fooStream);
_some_stream.pipe(barStream);
我想以一种方式对待福,以另一种方式对待酒吧。但是当我在对象上使用JSONStream.parse(“*”)时,它收到的第一个块是“3”


由于数据对象非常小,我希望拖缆返回整个对象,然后我将对其进行操作。不过,我仍然希望使用streams与项目的其余部分保持一致。如何强制JSONStream将整个对象提供给我?

虽然有点晚了,但我还是这样做了:

{
    foo: 3,
    bar: [
             {
                 key:value
             },
             {
                 key:value
             }
         ]
}
let obj = {foo:{}, bar:[]}

const fooStream = JSONStream.parse(["foo", true]);
fooStream.on("data", (data)=>{obj.foo = data;})

const barStream = JSONStream.parse(["bar", true]);
barStream.on("data", (data)=>{obj.bar.push(data);})

_some_stream.pipe(fooStream);
_some_stream.pipe(barStream);

为什么不
JSON
JSONStream
甚至不是一个标准的JavaScript对象(您可能正在使用Node,这是一个第三方包)。@lvaroGonzález它是Node。我希望与我们获取其余数据的方式保持一致——目前,它们是在foreach中用pipe()函数调用的,我宁愿使用JSONStream,也不愿让构建器不稳定地调用它。如果我读取的数据正确,这是不可能的。看起来这个包正是用于使用管道结果进行部分解析的。如果您想获得整个对象,请改用
JSON
。这是两个不同的任务,我认为你不能在这里实现完全的“一致性”(你不应该)