Loading KAIROXO page正在加载 KAIROXO 页面Đang tải trang KAIROXO

KAIROXO
Alternatives

CSV vs JSONL for Web Data Delivery: Choose a Clear Contract

Choose export formats by field shape, stream processing and spreadsheet use; document nulls, identifiers and schema versions.

KAIROXO

A calculator and pen rest on an open notebook.

CSV vs JSONL is a data-contract decision, not a competition to find one universally superior format. CSV fits rectangular tables and many spreadsheet workflows. JSON Lines, often called JSONL or NDJSON, fits record-oriented processing and can preserve nested values. Neither format repairs ambiguous field definitions or missing source evidence.

For a web-data delivery, start with the consumer and the shape of an accepted record. This guide follows KAIROXO's batch-versus-on-demand discussion and focuses on handoff format. Collection access can come from KAIROXO; schema design, serialization and downstream import behavior remain application responsibilities.

Compare the actual record shape

A flat observation with stable columns can work well in CSV. A record containing multiple offers, image arrays or a structured provenance object may fit JSONL more naturally. Flattening those fields is possible, but it introduces choices about repeated rows, JSON inside cells or additional files. Document those choices instead of letting a spreadsheet infer them.

Question

CSV

JSONL

Stable rectangular table

Natural fit

Supported but more verbose

Nested lists and objects

Needs a convention

Preserves the structure

Null versus empty string

Needs an explicit contract

Distinct JSON values

Stream processing

Requires a real CSV parser

One JSON value per line

Spreadsheet review

Common workflow

Usually needs import or conversion

Do not select the format only by file size. Consider parser availability, field types, downstream validation and whether the consumer must edit the data manually.

Preserve identifiers, nulls and timestamps

An identifier such as 0012 is text even when it contains only digits. Spreadsheet import may remove its leading zeros or reinterpret a long numeric-looking key. Record types in a schema or delivery note, and provide import guidance for identifier columns. Do not change the source identity merely to match a spreadsheet's automatic inference.

Choose how CSV represents null, missing and empty values. An empty cell cannot explain all three without another convention. JSONL can represent null explicitly and omit an absent property, but the consumer still needs to know whether omission is permitted. Use timezone-aware timestamps, consistent field names and a schema version in the delivery manifest.

Quote CSV correctly and keep a safe review view

CSV is not safely produced by joining fields with commas. Values may contain commas, quotes or newlines. Use a maintained serializer or test quoting rules: a quoted field doubles internal quotation marks, and a newline within it does not necessarily end a record. Consumers must use a CSV parser rather than splitting text by line.

Codejavascript
function csvRow(values) {  return values.map(value =>    '"' + String(value ?? "").replaceAll('"', '""') + '"'  ).join(",") + "\r\n";}function jsonLine(record) {  return JSON.stringify(record) + "\n";}

CSV quotation alone does not neutralize spreadsheet formulas. If untrusted text may begin with a formula marker, provide a separately labeled spreadsheet-safe view using a documented import policy. Preserve the faithful original dataset so a safety transformation does not silently alter the evidence. Formula handling varies by spreadsheet and import settings.

Use JSONL as records, not arbitrary fragments

Write a complete JSON object for each accepted record and terminate it with a newline. JSON string escaping keeps an embedded newline inside a field from becoming a record separator. Do not pretty-print a record across several lines if the contract promises one object per line.

Bound line and object sizes, validate each record and define what happens after a malformed line. A consumer may quarantine the bad record and continue, but it should report that the delivery is incomplete. Do not append an error message in plain text to a JSONL file and still label the whole file valid. Keep logs and data channels separate.

Deliver a manifest and verify the round trip

Include format, character encoding, schema version, record count, collection window and file digest in a manifest. For CSV, document column order, delimiter, quoting and null convention. For JSONL, list required fields and expected types. If files are compressed, specify that layer independently from the logical record format.

Test a round trip with multilingual text, commas, quotes, embedded line breaks, leading-zero identifiers, nulls, large integers and empty arrays. Compare parsed values with the original accepted records. Open a spreadsheet-safe sample with the intended import settings when that is part of the contract, but keep code-based parsing as the reproducible baseline.

Delivery-format questions

Sources and further reading

Related KAIROXO guide

Loading KAIROXO page正在加载 KAIROXO 页面Đang tải trang KAIROXO