Saltar al contenido principal
Página traducida

Esta página se tradujo del inglés con ayuda de IA. Si hay diferencias entre ambas, la versión en inglés es la referencia.

JSON_EXTRACT

Devuelve uno o varios valores de un objeto o array JSON bien formado.

Consulte también:
[SELECT] [DESCRIBE] [JSON_ARRAY_LENGTH] [ Tipos de datos ]


consejo

Use la función DESCRIBE para localizar los tipos de datos array u object que se pueden usar con las funciones JSON de StackQL. Use la función JSON_TYPE para determinar los tipos de datos de los objetos anidados o de los elementos de un array.

nota

La función json_extract se implementa como la función json_extract_path_text si usa stackql con un backend SQL postgres

Sintaxis​

SELECT JSON_EXTRACT(json_array_or_object, json_path[, json_path1, .. json_pathN])
FROM <multipartIdentifier>;

Argumentos​

json_array_or_object
Un array u objeto JSON.

json_path
La ruta JSON a un array u objeto contenido en json_array_or_object. Consulte jsonpath.com.

Si se proporciona un único json_path, se devuelve un resultado escalar que corresponde al tipo de datos de la ruta resuelta.

Si se proporcionan varios argumentos json_path, el resultado es un array compuesto por los objetos resueltos por las rutas respectivas.

Si se especifica '$' en el argumento json_path, se devuelve el objeto JSON completo correspondiente a la columna representada por el argumento json_array_or_object.

NOTA: puede usar herramientas como json-viewer para desarrollar y probar expresiones JSON Path

Valor(es) devuelto(s)​

Una cadena, un entero, un objeto, un array, un booleano o null, según el json_array_or_object y el json_path proporcionados como entrada.


Ejemplos​

Devolver los objetos de disco asociados a cada instancia de Google Compute Engine​

SELECT name, json_extract(disks, '$') as disks
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';

Devolver el nombre de dispositivo y el tamaño del primer disco conectado a cada instancia de Google Compute Engine​

SELECT name, json_extract(disks, '$[0].deviceName') as device_name,
json_extract(disks, '$[0].diskSizeGb') as disk_size
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';

Devolver el nivel de red de la primera NIC conectada a cada instancia de Google Compute Engine​

SELECT name, json_extract(networkInterfaces, '$[0].accessConfigs[0].networkTier') as network_tier
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';

Devolver una lista de los scopes asociados a la primera cuenta de servicio asociada a cada instancia de Google Compute Engine​

SELECT name, json_extract(serviceAccounts, '$[0].scopes') as scopes
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
/* returns a list for each service account */

Para obtener más información, consulte https://www.sqlite.org/json1.html#jex