Extract a value from JSON using dot/bracket path
⟐ DataExtract a nested value from JSON
$ echo "{"data":{"users":[{"name":"Alice"},{"name":"Bob"}]}}" | json-query (input, opts = {}) => {
if (!opts.path) return "Error: provide --path";
try {
const data = JSON.parse(input);
const parts = opts.path.match(/[^.\[\]]+/g) || [];
let val = data;
for (const p of parts) {
if (val == null) return "undefined";
val = val[isNaN(p) ? p : parseInt(p)];
}
return typeof val === "object"
? JSON.stringify(val, null, 2)
: String(val ?? "undefined");
} catch (e) {
return `Error: ${e.message}`;
}
}