JSONPath Online logojsonpath.online

JMESPath vs JSONPath

Key differences between JMESPath and JSONPath, plus side-by-side examples so you can choose the right query language for your project.

Feature comparison

FeatureJMESPathJSONPath
StandardizationJMESPath (spec + test suite)No formal standard
PrefixNo $ prefix$ root prefix required
Functions20+ built-in functionsNo built-in functions
ProjectionsArray + object projectionsArray projections only
FiltersBoolean filters with expressionsFilters vary by implementation
AWS CLINative supportNot supported
Learning curveModerate, function-richSimple for path traversal

Side-by-side examples

More examples →

Select all book titles

JMESPath

store.book[].title

JSONPath

$.store.book[*].title

Filter price < 10

JMESPath

store.book[?price < `10`].title

JSONPath

$.store.book[?(@.price < 10)].title

Project fields

JMESPath

store.book[].{Title: title, Author: author}

JSONPath

$.store.book[*].["title","author"]

Count items

JMESPath

length(store.book)

JSONPath

$.store.book.length()

Sort by price

JMESPath

sort_by(store.book, &price)[].title

JSONPath

No built-in sort (needs client code)

When to choose which

  • Use JMESPath for AWS CLI, Ansible, Azure CLI, or when you need functions like sort_by, length, join.
  • Use JSONPath when you only need path traversal and your runtime already supports it.
  • Interoperate: fetch data with JSONPath, reshape with JMESPath, and export with our CSV converter.