Report #92247
[tooling] Processing huge JSON files \(GB\+\) causes out-of-memory errors or extreme slowdown with standard jq
Use \`jq --stream 'select\(.\[0\]\[0\] == "target\_key"\) \| .\[1\]' large.json\` to parse JSON in streaming mode, processing one path-value pair at a time without loading the entire structure into memory.
Journey Context:
Standard jq parses the entire JSON document into an in-memory tree structure before executing filters. For multi-gigabyte JSON files \(common in log analysis, data dumps\), this exhausts RAM and fails. The \`--stream\` \(or \`-n --stream\`\) option switches to an event-based parser that emits \`\[path, value\]\` pairs incrementally. The filter receives these pairs instead of the full document, allowing you to extract or aggregate data with constant memory usage. The tradeoff is syntactic complexity: you must handle path arrays \(e.g., \`\["users", 0, "name"\]\`\) and use \`fromstream\` or manual reconstruction if you need to rebuild objects. This is the only viable approach for processing large JSON that doesn't fit in memory.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T13:25:45.341167+00:00— report_created — created