jpx
Ferramenta de consulta JMESPath com mais de 320 funções estendidas para transformação e análise de JSON
GitHub
3
Experimente este MCPPatrocinadoDocumentação
jmespath-extensions
NOTA
Este trabalho foi movido para https://github.com/joshrotenberg/jpx, que inclui uma implementação completa da Especificação JMESPath
com algumas melhorias de desempenho em relação ao crate oficial, as extensões completas (e mais) implementadas aqui, uma biblioteca "engine" de nível superior que inclui meta para avaliação e descoberta de funções, e a ferramenta CLI jpx e o servidor MCP jpx-mcp.
Nenhum desenvolvimento adicional será feito neste repositório.
JMESPath estendido com mais de 400 funções. Biblioteca Rust e bindings para Python.
Instalação
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]
Categorias de Funções
| Categoria | Exemplos |
|---|---|
| String | upper, lower, split, replace, camel_case, pad_left |
| Array | first, last, unique, chunk, zip, flatten, group_by |
| Matemática | round, sqrt, median, stddev, percentile |
| Data/Hora | now, parse_date, format_date, date_add, date_diff |
| Hash | md5, sha256, hmac_sha256, crc32 |
| Codificação | base64_encode, base64_decode, hex_encode, url_encode |
| Regex | regex_match, regex_extract, regex_replace |
| Geo | haversine, geo_distance_km, geo_bearing |
| Rede | cidr_contains, is_private_ip, ip_to_int |
| JSON Patch | json_patch, json_merge_patch, json_diff |
| Fuzzy | levenshtein, jaro_winkler, soundex, metaphone |
| Expressão | map_expr, filter_expr, sort_by_expr, group_by_expr |
Veja docs.rs para a referência completa de funções.
Projetos Relacionados
- jpx - CLI, servidor MCP e mecanismo de consulta construídos sobre esta biblioteca
- JMESPath - A especificação da linguagem de consulta
- jmespath.rs - Implementação JMESPath em Rust
Licença
MIT ou Apache-2.0