jpx

Ferramenta de consulta JMESPath com mais de 320 funções estendidas para transformação e análise de JSON

Documentaçã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.

Crates.io Documentation CI

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

CategoriaExemplos
Stringupper, lower, split, replace, camel_case, pad_left
Arrayfirst, last, unique, chunk, zip, flatten, group_by
Matemáticaround, sqrt, median, stddev, percentile
Data/Horanow, parse_date, format_date, date_add, date_diff
Hashmd5, sha256, hmac_sha256, crc32
Codificaçãobase64_encode, base64_decode, hex_encode, url_encode
Regexregex_match, regex_extract, regex_replace
Geohaversine, geo_distance_km, geo_bearing
Redecidr_contains, is_private_ip, ip_to_int
JSON Patchjson_patch, json_merge_patch, json_diff
Fuzzylevenshtein, jaro_winkler, soundex, metaphone
Expressãomap_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