Skip to content

feat: add --json-path flag to navigate nested JSON arrays for input#151

Merged
vmvarela merged 2 commits into
masterfrom
issue-141/json-path-flag
May 10, 2026
Merged

feat: add --json-path flag to navigate nested JSON arrays for input#151
vmvarela merged 2 commits into
masterfrom
issue-141/json-path-flag

Conversation

@vmvarela
Copy link
Copy Markdown
Owner

Summary

  • Adds --json-path <dot.separated.path> flag for -I json mode so users can reach a nested array inside a JSON document
  • Works for query mode, --columns, and --validate
  • Omitting the flag preserves existing behaviour (bare top-level array expected)

Examples

# Single-key path
printf '{"data":[{"name":"Alice"},{"name":"Bob"}]}' | sql-pipe -I json --json-path data 'SELECT name FROM t'

# Multi-segment path
curl https://api.example.com/feed | sql-pipe -I json --json-path results.items 'SELECT title FROM t'

# Schema inspection on nested doc
printf '{"feed":{"entry":[{"title":"T1"}]}}' | sql-pipe -I json --json-path feed.entry --columns

Changes

  • src/args.zigMissingJsonFlagValue error, json_path field in ParsedArgs/ColumnsArgs/ValidateArgs, flag parsing, usage text
  • src/json.zigpub navigateJsonPath() helper, json_path parameter in loadJsonArray
  • src/main.zig — thread parsed.json_path + error handler
  • src/modes/columns.zig / src/modes/validate.zig — navigate via json_mod.navigateJsonPath
  • build.zig — integration tests 132–136 (single-key, multi-segment, missing key, non-array, --columns)

Closes #141

@vmvarela vmvarela added type:feature New functionality priority:medium Should be done soon size:s Small — 1 to 4 hours labels May 10, 2026
vmvarela added 2 commits May 10, 2026 13:42
Add --json-path <dot.separated.path> flag for -I json mode, allowing
users to reach a nested array inside a JSON document:

  curl https://api.example.com/feed     | sql-pipe -I json --json-path results.items 'SELECT title FROM t'

The flag is also forwarded to --columns and --validate so schema
inspection works on nested documents.  Omitting the flag preserves
existing behaviour (top-level bare array expected).

Adds navigateJsonPath() helper in json.zig, threads json_path through
ParsedArgs / ColumnsArgs / ValidateArgs, and adds 5 integration tests
(single-key path, multi-segment path, missing key, non-array target,
--columns with --json-path).

Closes #141
@vmvarela vmvarela force-pushed the issue-141/json-path-flag branch from 0cd6241 to 482059f Compare May 10, 2026 11:43
@vmvarela vmvarela merged commit 4e94a6c into master May 10, 2026
4 checks passed
@vmvarela vmvarela deleted the issue-141/json-path-flag branch May 10, 2026 11:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority:medium Should be done soon size:s Small — 1 to 4 hours type:feature New functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: add --json-path flag to navigate nested JSON arrays for input

1 participant