Skip to content

Repository files navigation

jmespath-extensions

NOTE

This work has moved to https://github.com/joshrotenberg/jpx which includes a full JMESPath Specification implementation with some performance improvements over the official crate, the full extensions (plus more) implemented here, a higher level "engine" library that includes meta for both evaluation and function discovery, and the jpx CLI tool and the jpx-mcp MCP server.

No further development will be done on this repository.

Crates.io Documentation CI

Extended JMESPath with 400+ functions. Rust library and Python bindings.

Installation

Rust

[dependencies]
jmespath_extensions = "0.9"

Python

pip install jmespath-extensions

Usage

Rust

use jmespath_extensions::search;
use serde_json::json;

let data = json!({"items": [1, 2, 3, 4, 5]});
let result = search("sum(items)", &data)?;
assert_eq!(result, json!(15));

// String functions
let data = json!({"name": "alice"});
let result = search("upper(name)", &data)?;
assert_eq!(result, json!("ALICE"));

// Date functions
let result = search("format_date(now(), '%Y-%m-%d')", &json!({}))?;

// Array functions
let data = json!({"values": [1, 2, 2, 3, 3, 3]});
let result = search("unique(values)", &data)?;
assert_eq!(result, json!([1, 2, 3]));

Python

import jmespath_extensions as jmx

# Basic usage
data = {"items": [1, 2, 3, 4, 5]}
result = jmx.search("sum(items)", data)
assert result == 15

# String functions
result = jmx.search("upper(name)", {"name": "alice"})
assert result == "ALICE"

# Array functions
result = jmx.search("unique(values)", {"values": [1, 2, 2, 3]})
assert result == [1, 2, 3]

Function Categories

Category Examples
String upper, lower, split, replace, camel_case, pad_left
Array first, last, unique, chunk, zip, flatten, group_by
Math round, sqrt, median, stddev, percentile
Date/Time now, parse_date, format_date, date_add, date_diff
Hash md5, sha256, hmac_sha256, crc32
Encoding base64_encode, base64_decode, hex_encode, url_encode
Regex regex_match, regex_extract, regex_replace
Geo haversine, geo_distance_km, geo_bearing
Network cidr_contains, is_private_ip, ip_to_int
JSON Patch json_patch, json_merge_patch, json_diff
Fuzzy levenshtein, jaro_winkler, soundex, metaphone
Expression map_expr, filter_expr, sort_by_expr, group_by_expr

See docs.rs for the full function reference.

Related Projects

  • jpx - CLI, MCP server, and query engine built on this library
  • JMESPath - The query language specification
  • jmespath.rs - Rust JMESPath implementation

License

MIT or Apache-2.0

About

Extended functions for JMESPath queries in Rust

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages