txt: ## dist_cpan-JNTHN-JSON-Path.md
  # JSON::Path [Build Status](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).
  