jpx

JMESPath query tool with 320+ extended functions for JSON transformation and analysis

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

CategoryExamples
Stringupper, lower, split, replace, camel_case, pad_left
Arrayfirst, last, unique, chunk, zip, flatten, group_by
Mathround, sqrt, median, stddev, percentile
Date/Timenow, parse_date, format_date, date_add, date_diff
Hashmd5, sha256, hmac_sha256, crc32
Encodingbase64_encode, base64_decode, hex_encode, url_encode
Regexregex_match, regex_extract, regex_replace
Geohaversine, geo_distance_km, geo_bearing
Networkcidr_contains, is_private_ip, ip_to_int
JSON Patchjson_patch, json_merge_patch, json_diff
Fuzzylevenshtein, jaro_winkler, soundex, metaphone
Expressionmap_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

Máy chủ liên quan

NotebookLM Web Importer

Nhập trang web và video YouTube vào NotebookLM chỉ với một cú nhấp. Được tin dùng bởi hơn 200.000 người dùng.

Cài đặt tiện ích Chrome