mtdowling/jmespath.php
Declaratively specify how to extract elements from a JSON document
2.9.2
526M downloads/mo
#111 most downloaded on composer
jmespath/jmespath.php
What this package is like to depend on
Last release 1 months ago
06 Jul 2026
Release timing varies
gaps range from 4 weeks to 3.1 years
Most releases are documented
notes for 15 of 20 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
20 releases · first in 2014
3 releases in the last 12 months
see the full history below
Release timeline
20 releases · Feb 2014 to Jul 2026Releases
latest 20-
2.9.206 Jul 2026 -
2.9.111 Jun 2026Release notes
Open source →- Fixed the compiled runtime to emit function names as string literals, preventing arbitrary code execution.
- Fixed the parser to reject non-identifier function callees, such as literal and raw string callees.
Release notes
Open source →- Fixed the compiled runtime to emit function names as string literals, preventing arbitrary code execution.
- Fixed the parser to reject non-identifier function callees, such as literal and raw string callees.
-
2.9.010 Jun 2026Release notes
Open source →- Added PHP 8.5 support.
- Fixed to_number() to parse number strings using the JSON number grammar.
- Fixed reverse() and string slicing to operate on UTF-8 characters rather than bytes.
- Fixed slicing of array-like (ArrayAccess + Countable) values.
- Fixed equality and contains() to use JSON semantics, e.g. 1 == 1.0 is now true.
- Fixed multi-select hashes to end projections, so following tokens apply to the projected list.
- Fixed sort() and sort_by() to compare numbers numerically.
- Changed sort(), sort_by(), max(), min(), max_by() and min_by() to order strings by code point.
- Fixed max_by() and min_by() to error on mixed-type keys instead of returning arbitrary elements.
- Fixed max() returning null or erroring when the first array element is falsy, e.g. max([0, 1]).
- Fixed sum() and join() to return 0 and an empty string respectively for empty arrays.
- Fixed 0.0 to be truthy in filters and logical operators, like every other number.
- Fixed the compiled runtime to apply JMESPath truthiness to || and &&.
- Fixed @(foo), foo[-] and oversized index literals to throw syntax errors.
- Fixed PHP warnings emitted while parsing certain invalid expressions.
- Fixed the caret position in syntax error messages for errors at the end of an expression.
- Fixed map() to error on non-array second arguments instead of returning [].
- Fixed Env::cleanCompileDir() when JP_PHP_COMPILE=on.
Release notes
Open source →- Added PHP 8.5 support.
- Fixed to_number() to parse number strings using the JSON number grammar.
- Fixed reverse() and string slicing to operate on UTF-8 characters rather than bytes.
- Fixed slicing of array-like (ArrayAccess + Countable) values.
- Fixed equality and contains() to use JSON semantics, e.g. 1 == 1.0 is now true.
- Fixed multi-select hashes to end projections, so following tokens apply to the projected list.
- Fixed sort() and sort_by() to compare numbers numerically.
- Changed sort(), sort_by(), max(), min(), max_by() and min_by() to order strings by code point.
- Fixed max_by() and min_by() to error on mixed-type keys instead of returning arbitrary elements.
- Fixed max() returning null or erroring when the first array element is falsy, e.g. max([0, 1]).
- Fixed sum() and join() to return 0 and an empty string respectively for empty arrays.
- Fixed 0.0 to be truthy in filters and logical operators, like every other number.
- Fixed the compiled runtime to apply JMESPath truthiness to || and &&.
- Fixed @(foo), foo[-] and oversized index literals to throw syntax errors.
- Fixed PHP warnings emitted while parsing certain invalid expressions.
- Fixed the caret position in syntax error messages for errors at the end of an expression.
- Fixed map() to error on non-array second arguments instead of returning [].
- Fixed Env::cleanCompileDir() when JP_PHP_COMPILE=on.
-
2.8.004 Sep 2024 -
2.7.025 Aug 2023Release notes
Open source →- Fixed flattening in arrays starting with null.
- Drop support for HHVM and PHP earlier than 7.2.5.
- Add support for PHP 8.1, 8.2, and 8.3.
Release notes
Open source →- Fixed flattening in arrays starting with null.
- Drop support for HHVM and PHP earlier than 7.2.5.
- Add support for PHP 8.1, 8.2, and 8.3.
-
2.6.114 Jun 2021 -
2.6.031 Jul 2020 -
2.5.030 Dec 2019Release notes
Open source →- Full support for PHP 7.0-7.4.
- Fixed autoloading when run from within vendor folder.
- Full multibyte (UTF-8) string support.
Release notes
Open source →- Full support for PHP 7.0-7.4.
- Fixed autoloading when run from within vendor folder.
- Full multibyte (UTF-8) string support.
-
2.4.003 Dec 2016Release notes
Open source →- Added support for floats when interpreting data.
- Added a function_exists check to work around redeclaration issues.
Release notes
Open source →- Added support for floats when interpreting data.
- Added a function_exists check to work around redeclaration issues.
-
2.3.005 Jan 2016Release notes
Open source →- Added support for JEP-9,
including unary filter expressions, and&&filter expressions. - Fixed various parsing issues, including not removing escaped single quotes
from raw string literals. - Added support for the
mapfunction. - Fixed several issues with code generation.
Release notes
Open source →- Added support for JEP-9,
including unary filter expressions, and
&&filter expressions. - Fixed various parsing issues, including not removing escaped single quotes from raw string literals.
- Added support for the
mapfunction. - Fixed several issues with code generation.
- Added support for JEP-9,
-
2.2.027 May 2015 -
2.1.013 Jan 2015Release notes
Open source →- Added
JmesPath\Env::cleanCompileDir()to delete any previously compiled JMESPath expressions.
- Added
-
2.0.012 Jan 2015Release notes
Open source →- Moving to a flattened namespace structure.
- Runtimes are now only PHP callables.
- Fixed an error in the way empty JSON literals are parsed so that they now return an empty string to match the Python and JavaScript implementations.
- Removed functions from runtimes. Instead there is now a function dispatcher class, FnDispatcher, that provides function implementations behind a single dispatch function.
- Removed ExprNode in lieu of just using a PHP callable with bound variables.
- Removed debug methods from runtimes and instead into a new Debugger class.
- Heavily cleaned up function argument validation.
- Slice syntax is now properly validated (i.e., colons are followed by the appropriate value).
- Lots of code cleanup and performance improvements.
- Added a convenient
JmesPath\search()function. - IMPORTANT: Relocating the project to https://github.com/jmespath/jmespath.php
-
1.1.108 Oct 2014Release notes
Open source →- Added support for using ArrayAccess and Countable as arrays and objects.
-
1.1.006 Aug 2014Release notes
Open source →- Added the ability to search data returned from json_decode() where JSON objects are returned as stdClass objects.
-
1.0.019 Jun 2014Nothing published for this version
-
0.4.017 Jun 2014Nothing published for this version
-
0.3.017 Jun 2014Nothing published for this version
-
0.2.023 Apr 2014Nothing published for this version
-
0.1.019 Feb 2014Nothing published for this version