问题标签 [jsonstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
70 浏览

node.js - Mongoose Stream API:文档结构

我正在考虑将我的结果流式传输到浏览器(使用 nodejs 和客户端库,可能类似于 Oboe.js),但我有一个可能无限深的嵌套文档结构。

我是否必须更改我的文档结构以便我的嵌套对象可以作为单独的 mongo 文档使用,或者 stream() 是否也将部分对象提交给客户端?

谢谢 :)

0 投票
1 回答
481 浏览

node.js - 使用可写流作为事件发射器

我想知道是否可以使用可写流(require('stream').Writable)作为事件发射器。

例如,

我认为可读/可写流是事件发射器,但似乎我不能真正以这种方式使用它们?还想知道我是否通过写入可写对象/流之外的数组来正确使用可写。

0 投票
1 回答
1397 浏览

javascript - 使用 JSONStream.parse 解析整个对象

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

我想以一种方式对待 foo,并禁止另一种方式。但是当我在对象上使用 JSONStream.parse("*") 时,它收到的第一个块是“3”。

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

0 投票
2 回答
3497 浏览

javascript - 如何读取每个对象的 JSON 对象流

我有一个二进制应用程序,它生成一个连续的 json 对象流(不是一个 json 对象数组)。Json 对象有时可以跨越多行(仍然是有效的 json 对象,但经过美化)。

我可以连接到这个流并阅读它,而不会出现以下问题:

流是缓冲区并随时发出数据事件,因此我使用 readline 模块将缓冲区解析为行,并且它适用于不跨越的 Json 对象(我能够 JSON.parse() 行)在多条线上。

最佳解决方案是监听返回单个 json 对象的事件,例如:

我注意到流节点文档中的 objectMode 选项,但是我得到了 Buffer 格式的流,所以我相信我无法使用它。

在 pixl-json-stream, json-stream 上查看了 npm,但在我看来,这些都不符合目的。有 clarinet-object-stream 但它需要根据事件从头开始构建 json 对象。

我无法控制 json 对象流,大多数情况下一个对象在一行上,但是 10-20% 的时间 json 对象在多行上(\n 作为 EOL),对象之间没有分隔符。每个新对象总是从新行开始。

样本流:

必须有一个解决方案我只是错过了一些明显的东西。宁愿找到合适的模块,然后用正则表达式破解流解析器来处理这种情况。

0 投票
1 回答
1322 浏览

javascript - NodeJS JSONStream 将数据作为一个长字符串返回

我有一个 300k 行的 JSON 文件,我试图在 Node 中使用 JSONStream 进行解析。从文档中,当执行以下操作时,我期望文件的前 10 行输出到控制台,但是我将整个文档作为字符串获取,\n每行之间有字符:

JSONStream.parse("*")应该...解析 JSON 吗?我在这里做错了什么?

0 投票
0 回答
212 浏览

json - Oboe JS 仅在服务器流死亡时返回数据

我已经设置了一个从服务器流式传输 JSON 的双簧管 JS 流。当我开始收听流时,我没有得到任何数据,但是一旦我终止服务器,我就会得到所有预期的节点。我猜双簧管在它返回之前正在缓存。这是双簧管代码:

0 投票
1 回答
871 浏览

node.js - node heap exhausted when piping JSONStream.parsed() data through es.map() and JSONStream.stringify() to file stream

I'm trying to pipe an input stream (created from a huge GeoJSON file) through JSONStream.parse() to break the stream into objects, then through event-stream.map() to allow me to transform the object, then through JSONStream.stringify() to create a string out of it, and finally to a writable output stream. As the process runs, I can see node's memory footprint continue to grow until it eventually exhausts heap. Here's the simplest script (test.js) that recreates the problem:

A little bash script (barf.sh) that spews an endless stream of JSON into node's process.stdin will cause node's heap to gradually grow:

by running it as so:

There are a couple of curious ways to sidestep the issue:

  • Remove the fs.createWriteStream() and change the last pipe stage from ".pipe(out)" to ".pipe(process.stdout)" and then pipe node's stdout to /dev/null
  • Change the asynchronous es.map() to the synchronous es.mapSync()

Either one of the preceding two actions will allow the script to run forever, with node's memory footprint low and unchanging. I'm using node v6.3.1, event-stream v3.3.4, and JSONStream 1.1.4 on an eight core machine with 8GB of RAM running Ubuntu 16.04.

I hope someone can help me correct what I'm sure is an obvious error on my part.

0 投票
1 回答
423 浏览

json - 使用 JSONPath 和 JSONStream 解析 json 流

我有这样的数据流:

注意:这些映射之间没有逗号。

我想在 node.js 中读取这个流,以便我可以捕获两个映射,如上所示。我一直在尝试使用 JSONStream 来做到这一点,它擅长识别流中的离散 JSON 实体,但它会在某种程度上改变数据。所以我正在运行的代码是:

这输出:

我希望它输出未更改的 JSON 映射:

任何人都知道我如何使用 JSONStream 或其他东西来实现这一点?

0 投票
0 回答
407 浏览

javascript - 在 Node.js 中准备好数据后管道数据

我有一个像这样的大型 JSON 文件:

我正在寻找每个对象中的纬度和经度。我正在使用 JSONStream 模块来管道数据:

地理编码部分有效。

我的问题是 JSONStream.stringify 在搜索功能结束之前读取然后管道数据。所以我得到了相同的 JSON 文件,没有我需要的修改。如果我只是试试这个:

而不是需要更多时间的地理编码,它可以工作。我猜我的问题在于修改流式传输的数据所需的时间。那么,一旦数据被修改,有没有办法通过管道传输数据?

编辑 我在同步和异步之间搞砸了。感谢djones

0 投票
0 回答
158 浏览

c# - 从没有方括号的asp.net核心流式传输字符串?

我的 HomeController 中的索引函数:

这个想法是,当访问索引时,“测试:i”将每秒打印一次。

但是它效果不佳,输出以小块而不是定时方式出现,因此页面被卡在被检索然后我得到一个响应块,但它非常非常慢。

输出也有方括号,我认为这是因为我返回了一个 IEnumerable 类型,所以我想知道是否有不同的方法可以做到这一点?我正在尝试模仿没有方括号的 http 流。