問題タブ [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.
javascript - JSONStream の基本テストが機能しない
私は node.js で JSONStream を見ており、次の小さなアプリを試してハンドルを取得しようとしています:
残念ながら、コマンドラインで実行すると、コンソールに何も書き込まれません。私は何を間違っていますか?
javascript - 大きすぎてメモリに収まらない JSON オブジェクトの処理
JSON に格納されたユーザー テーブルを表す Firebase データベースのダンプがあります。データ分析を実行したいのですが、大きすぎてメモリに完全にロードして、純粋な JavaScript (または_
同様のライブラリ) で操作できないという問題があります。
これまで、JSONStreamパッケージを使用して、データを一口サイズのチャンクで処理してきました (JSON ダンプ内のユーザーごとに 1 回コールバックを呼び出します)。
ただし、値に基づいてユーザー ID をフィルター処理したいため、障害が発生しました。私が答えようとしている「質問」は、「どのユーザー x」という形式のものですが、以前は「何人のユーザー x」と尋ねるだけで、彼らが誰であるかを知る必要はありませんでした。
データ形式は次のようになります。
私がやりたいことは、基本的に の値に基づいてユーザー ID (123
または上記) を取得することです。これが小さなリストである場合、キーと値を反復処理して必要なキーを抽出するようなものを使用するのは簡単です。567
foo
_.each
残念ながら、メモリに収まらないため、機能しません。JSONStream を使用するvar parser = JSONStream.parse('users.*');
と、次のようにそれを処理する関数を使用してパイプすることで、それを反復処理できます。
しかし、問題は、渡したスター ワイルドカードを表すキーにアクセスできないことですJSONStream.parse
。{ foo: bar}
つまり、 がuser なの123
か userなのかわかりません567
。
質問は 2 つあります。
- コールバック内から現在のパスを取得するにはどうすればよいですか?
- 大きすぎてメモリに収まらないこの JSON データを処理するより良い方法はありますか?
regex - Nodejs: JSONStream 解析メソッドの正規表現
私はこのようなペイロードを持っています
json ペイロードからのみ RESOURCE タグのコンテンツを抽出する必要があります。正規表現の定式化を手伝ってもらえますか? 以下は私が試したもので、parser.data メソッドを呼び出しません。
json - Oboe.js、MongoDB、Express.js による JSON ストリーミング
Oboe.js、MongoDB、および Express.js を使用して、HTTP を介した JSON ストリーミングを試しています。
ポイントは、MongoDB
(Node.js の mongodb ネイティブ ドライブ) でクエリを実行し、それを (JavaScript 配列) にパイプしてExpress.js
、ブラウザーでOboe.js
.
私が行ったベンチマークは、MongoDB クエリ サーバー側とクライアント側での JSON 解析の両方でstreaming
比較しました。blocking
2 つのベンチマークのソース コードを次に示します。はof (ページネーション)のfirst number
ミリ秒数で、括弧の間は、MongoDB 結果配列の最初の項目が解析されるまでのミリ秒数を表します。1000 queries
100 items
10 million documents collection
second number
サーバー側のストリーミング ベンチマーク:
サーバー側のブロッキング ベンチマーク:
これらの結果には本当に驚かされます。
Streaming
blocking
毎回よりも速くなります。Oboe.js
JSON.parse
ネイティブメソッドと比較して、JSON 配列全体を解析する方が高速です。Oboe.js
JSON.parse
ネイティブメソッドと比較して、配列の最初の要素を解析する方が高速です。
誰か説明がありますか?私は何を間違っていますか?
2 つのクライアント側ベンチマークのソース コードもここにあります。
クライアント側のストリーミング ベンチマーク:
クライアント側のブロッキング ベンチマーク:
前もって感謝します !
json - goで標準入力から無限のjson配列を解析するには?
このプロトコルに準拠した i3bar と通信する小さなプログラムである i3status の小さな代替品を作成しようとしています。それらは stdin と stdout を介してメッセージを交換します。
両方向のストリームは、json オブジェクトの無限配列です。i3bar から i3status (置き換えたい) へのストリームの開始は次のようになります。
これは、クリックを表すオブジェクトの「配列」です。配列は決して閉じません。
私の質問は今です:これを解析する正しい方法は何ですか?
json
これは有効なjsonオブジェクトではないため、明らかにライブラリを使用できません。
json - Node.jsでネストされた大きなオブジェクトをJSON文字列化するためにストリームを使用する方法は?
JSON に変換してファイルに書き込みたい大きな JavaScript オブジェクトがあります。このようなストリームを使用してこれを行うことができると思いました
これを試すと、エラーが発生します。
どうやら、これにオブジェクトを書き込むことはできませんstringifyObject
。次のステップが何かわかりません。オブジェクトをバッファに変換する必要がありますか? 変換ストリームを介してオブジェクトを実行し、パイプしますstrinigfyObject
node.js - node.js - JSONStream 中の無限ループ
本番環境でフリーズしている node.js サーバーを持っています。JSONStream 内の無限ループが原因のようです。フリーズしたサーバーのコア ダンプから取得したスタック トレースを次に示します。
この無限ループの原因を見つけるにはどうすればよいですか?
残念ながら、サーバーは本番環境で稼働しており、何千ものリクエストを処理しているため、追加のコンテキストを提供することは困難です. サーバーの基本的な機能は、他のサービスに対してアウトバウンド HTTP 要求を行うことです。
これがメモリリークが原因であるとは思わないことに注意してください。これらのフリーズ イベントの間、サーバーのメモリ使用量は一定 (かつ低く) に保たれますが、CPU は 99% に急上昇します。
無限ループが終了したことを示すもう 1 つの証拠は、イベント ループ自体が停止したように見えることです。setInterval 内に console.log を配置すると、サーバーがフリーズするとすぐに出力が停止します。
最大接続数を Infinity に設定することで (node.js での再利用を無効にします)、問題の原因がソケット接続の期限切れ/破損ではないことを確認しました。
JSONStream 0.7.1 を使用しています (デフォルトの jsonparse バージョン 0.0.5 が含まれています)。JSONStream リポジトリでこの問題を発見し、JSONParse をフォークして、最新の jsonparse バージョンにのみ更新しようとしました。問題は解決しませんでした。