# JSON::Path [](https://travis-ci.org/jnthn/json-path) The [JSONPath query language](https://goessner.net/articles/JsonPath/) was designed for indexing into JSON documents. It plays the same role as XPath does for XML documents. This module implements `JSON::Path`. However, it is not restricted to working on JSON input. In fact, it will happily work over any data structure made up of arrays and hashes. ## Synopsis # Example data. my $data = { kitchen => { drawers => [ { knife => '����' }, { glass => '����' }, { knife => '�������' }, ] } }; # A query my $jp = JSON::Path.new('$.kitchen.drawers[*].knife'); # The first result dd $jp.value($data); # "����" # All results. dd $jp.values($data); # ("����", "�������").Seq # All paths where the results were found. dd $jp.paths($data); # ("\$.kitchen.drawers[0].knife", # "\$.kitchen.drawers[2].knife").Seq # Interleaved paths and values. dd $jp.paths-and-values($data); # ("\$.kitchen.drawers[0].knife", "����", # "\$.kitchen.drawers[2].knife", "�������").Seq ## Query Syntax Summary The following syntax is supported: $ root node .key index hash key ['key'] index hash key [2] index array element [0,1] index array slice [4:5] index array range [:5] index from the beginning [-3:] index to the end .* index all elements [*] index all elements [?(expr)] filter on (Perl 6) expression ..key search all descendants for hash key A query that is not rooted from `$` or specified using `..` will be evaluated from the document root (that is, same as an explicit `$` at the start).