The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

use strict;
use Test::More tests => 4;
use FindBin;
use lib "$FindBin::Bin/../lib";
my $json = <<'EOF';
{
"users": [
{ "name": "Alice", "age": 30 },
{ "name": "Bob", "age": 25 },
{ "name": "Charlie", "age": 35 }
]
}
EOF
my $jq = JQ::Lite->new;
# Test: users[].name
my @names = $jq->run_query($json, '.users[] | .name');
is_deeply(\@names, ["Alice", "Bob", "Charlie"], 'Extract names from users array');
# Test: users[].age
my @ages = $jq->run_query($json, '.users[] | .age');
is_deeply(\@ages, [30, 25, 35], 'Extract ages from users array');
# Test: nested traversal .users[].name
my @alt = $jq->run_query($json, '.users[].name');
is_deeply(\@alt, ["Alice", "Bob", "Charlie"], 'Alternative syntax for extracting names');
# Test: top-level object access
my @all = $jq->run_query($json, '.users');
ok(ref($all[0]) eq 'ARRAY', 'Top-level array returned');