parser
parserモジュールは、CSVとNDJSONデータ用のストリーミングデコーダーを提供します。
JSHストリームとともに使用するために設計されており、解析したオブジェクトをイベントで渡します。
一般的な使用方法は以下のとおりです。
const parser = require('parser');エクスポートされるメンバー
csv(options)ndjson(options)CSVParserNDJSONParser
csv()
CSVパーサーストリームを作成します。
構文
parser.csv([options])オプション
| オプション | 型 | 既定値 | 説明 |
|---|---|---|---|
separator | String | , | フィールド区切り文字 |
quote | String | " | 引用符 |
escape | String | quoteと同じ | エスケープ文字 |
headers | true / false / String[] | true | ヘッダーの処理方式 |
skipLines | Number | 0 | 先頭でスキップする行数 |
skipComments | Boolean | String | false | コメント行をスキップ。文字列を指定すると、その文字列をコメントの接頭辞に使用 |
strict | Boolean | false | 列数が異なる場合は失敗 |
mapHeaders | Function | ヘッダー名の変換関数 | |
mapValues | Function | 行を出力する前に値を変換 | |
trimLeadingSpace | Boolean | true | 各フィールドの先頭の空白を除去 |
戻り値
CSVParserインスタンスを返します。
CSVParser
モジュールがエクスポートするCSVパーサークラスです。
作成
new parser.CSVParser([options])コンストラクターは、parser.csv()と同じオプションを受け取ります。
イベント
headers: ヘッダー行の解析後に1回発生data: 解析した行オブジェクトごとに発生error: strictモードでの解析失敗時に発生end: 上流のストリームが終了すると発生
プロパティ
bytesWritten: 受信した入力のバイト数bytesRead: パーサーが消費したバイト数
行の構造
headersを省略するかtrueにすると、最初の有効な行をヘッダーとして使用します。headersがfalseの場合、フィールド名は"0"、"1"、"2"のようになります。headersが配列の場合、その名前を使用し、最初の行をデータとして扱います。- non-strictモードでは、追加の列は
_3のような_Nフィールドで出力します。
ndjson()
NDJSONパーサーストリームを作成します。
構文
parser.ndjson([options])オプション
| オプション | 型 | 既定値 | 説明 |
|---|---|---|---|
strict | Boolean | true | 不正なJSON行で失敗するか、スキップするかを指定 |
戻り値
NDJSONParserインスタンスを返します。
NDJSONParser
モジュールがエクスポートするNDJSONパーサークラスです。
作成
new parser.NDJSONParser([options])コンストラクターは、parser.ndjson()と同じオプションを受け取ります。
イベント
data: 解析したJSONオブジェクトごとに発生warning:strict: falseで不正な行をスキップした場合に発生error: strictモードでの解析失敗時に発生end: 上流のストリームが終了すると発生
warningイベントのオブジェクトには、以下のフィールドがあります。
| プロパティ | 型 | 説明 |
|---|---|---|
line | Number | スキップしたレコードの行番号 |
data | String | 前後の空白を除去した元の行のテキスト |
error | String | 解析エラーメッセージ |
プロパティ
bytesWritten: 受信した入力のバイト数bytesRead: パーサーが消費したバイト数
CSV 例
| |
NDJSON 例
| |
進捗表示の例
両パーサーストリームはbytesWrittenとbytesReadを提供するため、ストリーミング中の進捗を追跡できます。
| |
動作に関する注意
- 両パーサークラスは、JSHの
stream.Transform実装を継承します。 - 解析した行とオブジェクトは、
dataイベントで渡されます。 - 両パーサーとも空行を無視します。
NDJSONParserは、各行を解析する前にtrim()を適用します。CSVParserは、\r\n形式の入力を処理するため、行末の\rを除去します。
最終更新日