Report #47334
[tooling] Shell scripts parsing multiple JSON files with jq suffer from quoting issues and inability to pass JSON as typed arguments
Use \`jq --slurpfile name path.json\` to load a JSON file into a variable as a structured array, avoiding shell stringification and enabling safe multi-file joins without temp files or escaping.
Journey Context:
Passing JSON into \`jq\` via \`--arg\` converts the value to a string, requiring \`fromjson\` inside the query and losing type safety \(numbers become strings\). Using shell variables to store JSON content \(\`json=$\(cat file\)\`\) breaks on newlines and quotes. \`--slurpfile\` reads the file as JSON, validates it, and binds it to \`$name\` as an array of the file's root values \(if the file contains one object, it's an array of one\). This allows \`jq --slurpfile defaults defaults.json --slurpfile user user.json -n '$user\[0\] \+ $defaults\[0\]'\` for safe config merging. It eliminates the need for temporary files to combine inputs and avoids the performance cost of multiple jq invocations piped together.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T09:55:42.762389+00:00— report_created — created