NDJSON Stream
A newline-delimited JSON (NDJSON) stream of event records, for testing streaming JSON parsers.
{"id":1,"event":"page_view","path":"/"}
{"id":2,"event":"click","target":"download"}
{"id":3,"event":"page_view","path":"/about"}
{"id":4,"event":"search","query":"csv"}
Specifications
- Format
- NDJSON
- Records
- 4
- Line Endings
- LF
- Encoding
- UTF-8
Testing contract
Expected to pass- Scenario
- Exercise NDJSON Stream in its json workflow. A newline-delimited JSON (NDJSON) stream of event records, for testing streaming JSON parsers.
- Expected result
- 4 independently parseable JSON records; array length is 4; first-record keys are id, event, path.
What is a .ndjson file?
NDJSON (Newline-Delimited JSON) is a streaming format where each newline-separated line is a standalone JSON object, functionally equivalent to JSON Lines. It enables incremental processing of large datasets and streaming APIs. Each record is parsed independently of the rest.
How to use this file
Use an example NDJSON to test streaming ingestion, chunked HTTP or API response parsing, and tools that process records incrementally without loading the full file.
How to use this file for testing
“NDJSON Stream” is a deterministic Testaroo fixture for JSON parsing, Data import. Flat, deeply nested, JSON Lines, and intentionally invalid JSON for testing parsers and error handling.
Documented properties for this file: 4 records · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such, expect parsers to fail loudly rather than silently accept them.
Data fixtures document their exact quirks (delimiters, encodings, null handling, schema, and row counts) in the spec table. Point your parser or importer at the file and assert it handles the documented edge cases; clean and deliberately-messy siblings make before/after diffs straightforward.
Feed the file to your parser and assert it handles the documented quirks, quoted delimiters, embedded newlines, ragged rows, or invalid syntax; the valid↔invalid distinction is labelled in the title.
Code examples
import json
with open("stream.ndjson") as f:
rows = [json.loads(line) for line in f if line.strip()]
print(len(rows))Generated by generation/data_formats.py. Free for any use, no attribution required, license.
Related files
- jsonFlat JSON ArrayA flat JSON array of ten simple objects: the baseline case for JSON parsing and mapping.

- jsonlJSON Lines (JSONL)A JSON Lines file with one object per line, for testing streaming/newline-delimited JSON parsers.

- jsonAlder Books Reconciliation: Banking reconciliation identitiesBanking reconciliation identities for Alder Books Reconciliation. 5 named identities covering the amortisation, the unfinanced arrangement fee, the covenant directions, the direct debit control sum and the two different chargeback totals, with the figures behind each. The deliberate defect and its measured 36.15 USD closing balance are listed separately.

- jsonAlder Books Reconciliation: Credit application JSONCredit application JSON for Alder Books Reconciliation. The same application as an object, with each financial summary row keeping the source string that names the file and column it came from. The connected facility is a nested object rather than a string, so a reader can tell that the existing borrowing belongs to a different entity.

- jsonAlder Table Bistro: Cost of goods sold documentCost of goods sold document for Alder Table Bistro. The same statement as JSON, listing all 24 purchase ids it consumed so the total can be checked against the shared purchases table by id. Totals: opening 1736.91, purchases 2834.82, closing 2996.92, cost of goods sold 1574.81 CAD.

- jsonAlder Table Bistro: Daily Z-read as structured dataDaily Z-read as structured data for Alder Table Bistro. The same Z-read as JSON: 4 item lines, a summary block, 3 tender lines that sum to the total collected, 2 voids, one comp, 1 refund traced to its sales id, and a cash drawer block whose expected figure less the counted figure equals the declared over/short of -0.35 CAD.
