jpx

Herramienta de consulta JMESPath con más de 320 funciones extendidas para transformación y análisis de JSON

Documentación

jmespath-extensions

NOTA

Este trabajo se ha trasladado a https://github.com/joshrotenberg/jpx, que incluye una implementación completa de la Especificación JMESPath con algunas mejoras de rendimiento respecto al crate oficial, las extensiones completas (y más) implementadas aquí, una biblioteca "engine" de nivel superior que incluye metadatos tanto para la evaluación como para el descubrimiento de funciones, y la herramienta CLI jpx y el servidor MCP jpx-mcp.

No se realizará más desarrollo en este repositorio.

Crates.io Documentation CI

JMESPath extendido con más de 400 funciones. Biblioteca Rust y enlaces de Python.

Instalación

Rust

[dependencies]
jmespath_extensions = "0.9"

Python

pip install jmespath-extensions

Uso

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]

Categorías de funciones

CategoríaEjemplos
Cadenaupper, lower, split, replace, camel_case, pad_left
Matrizfirst, last, unique, chunk, zip, flatten, group_by
Matemáticasround, sqrt, median, stddev, percentile
Fecha/Horanow, parse_date, format_date, date_add, date_diff
Hashmd5, sha256, hmac_sha256, crc32
Codificaciónbase64_encode, base64_decode, hex_encode, url_encode
Regexregex_match, regex_extract, regex_replace
Geohaversine, geo_distance_km, geo_bearing
Redcidr_contains, is_private_ip, ip_to_int
JSON Patchjson_patch, json_merge_patch, json_diff
Difusolevenshtein, jaro_winkler, soundex, metaphone
Expresiónmap_expr, filter_expr, sort_by_expr, group_by_expr

Consulta docs.rs para la referencia completa de funciones.

Proyectos relacionados

  • jpx - CLI, servidor MCP y motor de consultas construido sobre esta biblioteca
  • JMESPath - La especificación del lenguaje de consultas
  • jmespath.rs - Implementación de JMESPath en Rust

Licencia

MIT o Apache-2.0