jq
| jq | ||
|---|---|---|
![]() | ||
| Desarrollador(es) | ||
|
Stephen Dolan y Nico Williams https://stedolan.github.io/jq/, http://stedolan.github.io/jq/, https://stedolan.github.io/jq y https://jqlang.org/ | ||
| Información general | ||
| Paradigma | Programación_funcional, orientado al procesamiento de JSON | |
| Apareció en | 22 de octubre de 2012 (12 años, 10 meses y 12 días) | |
| Diseñado por | Stephen Dolan | |
| Sistema de tipos | dinámico | |
| Implementaciones | jq | |
| Influido por | Icon, Haskell | |
| Licencia | Licencia MIT | |
jq es un lenguaje funcional de muy alto nivel con soporte para backtracking y gestión de flujos de datos JSON. Está relacionado con los lenguajes de programación Icon y Haskell.
Sintaxis
El lenguaje jq está basado en los conceptos de flujos, tuberías y filtros familiares a los del Shell de Unix. Los filtros se pueden construir a partir de expresiones de JSON utilizando una sintaxis similar a la de JSON y se conectan con el caràcter
"|". El filtro identidad es ".", y por ejemplo la expresión 1 | {"a": .} producirá el valor de JSON : {"a": 1}.
Este ejemplo muestra cómo definir un filtro con nombre para formatear un entero en cualquier base:
def tobase($b):
def digit: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[.:.+1];
def div: (. / $b) | floor;
def mod: . % $b;
def r: if . < $b then digit else (div | r) + (mod | digit) end;
#
select(2 <= $b and $b <= 36)
| r
;
El siguiente ejemplo presenta el uso de generadores:
def send_more_money:
def choose(m;n;used): ([range(m;n+1)] - used)[];
label $pipe
| 1 as $m
| 0 as $o
| choose(8;9;[]) as $s
| choose(2;9;[$s]) as $e
| choose(2;9;[$s,$e]) as $n
| choose(2;9;[$s,$e,$n]) as $d
| choose(2;9;[$s,$e,$n,$d]) as $r
| choose(2;9;[$s,$e,$n,$d,$r]) as $y
| select(num($s;$e;$n;$d) + num($m;$o;$r;$e) == num($m;$o;$n;$e;$y))
| [$s,$e,$n,$d,$m,$o,$r,$e,$m,$o,$n,$e,$y],
break $pipe
;
Véase también
Referencias
El manual de jq y la wiki de jq son las principales referencias de jq.
Enlaces externos
- Página principal de jq
- wiki de jq
- Código fuente de jq
- Página del Lenguaje de Programación jq en la web Rosetta Code de tareas de programación comparadas
