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.
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ía | Ejemplos |
|---|---|
| Cadena | upper, lower, split, replace, camel_case, pad_left |
| Matriz | first, last, unique, chunk, zip, flatten, group_by |
| Matemáticas | round, sqrt, median, stddev, percentile |
| Fecha/Hora | now, parse_date, format_date, date_add, date_diff |
| Hash | md5, sha256, hmac_sha256, crc32 |
| Codificación | base64_encode, base64_decode, hex_encode, url_encode |
| Regex | regex_match, regex_extract, regex_replace |
| Geo | haversine, geo_distance_km, geo_bearing |
| Red | cidr_contains, is_private_ip, ip_to_int |
| JSON Patch | json_patch, json_merge_patch, json_diff |
| Difuso | levenshtein, jaro_winkler, soundex, metaphone |
| Expresión | map_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