sql >> Base de Datos >  >> RDS >> Mysql

JSON_KEYS():devuelve las claves de un objeto JSON en MySQL

En MySQL, JSON_KEYS() La función devuelve claves del valor de nivel superior de un objeto JSON. Las claves se devuelven como una matriz JSON o, si es una path se da el argumento, las claves de nivel superior de la ruta seleccionada.

Proporcionas el documento JSON como argumento para la función.

También puede (opcionalmente) proporcionar un segundo argumento para especificar dónde comienza la ruta de "nivel superior" dentro del documento JSON.

Sintaxis

La sintaxis es así:

JSON_KEYS(json_doc[, path])

Donde json_doc es el documento JSON y path es un argumento opcional para determinar dónde comienza la ruta de "nivel superior" dentro del documento JSON.

La matriz de resultados está vacía si el objeto seleccionado está vacío. Si el valor de nivel superior tiene subobjetos anidados, el valor devuelto no incluye claves de esos subobjetos.

Ejemplo 1:uso básico

Aquí hay un ejemplo para demostrarlo.

SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';

Resultado:

+-----------------+
| Result          |
+-----------------+
| ["a", "b", "c"] |
+-----------------+

Aquí hay otro ejemplo:

SELECT 
  JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';

Resultado:

+-----------------+
| Result          |
+-----------------+
| ["Age", "Name"] |
+-----------------+

Ejemplo 2:especificar una ruta

Aquí hay un ejemplo de cómo especificar una ruta. Esto nos permite obtener las claves de un objeto anidado (en lugar de limitarnos solo al objeto de nivel superior de todo el documento JSON).

SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';

Resultado:

+-----------------+
| Result          |
+-----------------+
| ["d", "e", "f"] |
+-----------------+

Ejemplo 3:ruta inexistente

Si especifica una ruta que no existe, se devuelve un valor NULL.

SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';

Resultado:

+--------+
| Result |
+--------+
| NULL   |
+--------+

También obtendrá un valor NULL si alguno de los argumentos es NULL o si el primer argumento no es un objeto JSON.

Ejemplo 4:matrices

Las matrices no son objetos y no contienen pares clave/valor. Por lo tanto, obtendrá un valor NULL si intenta devolver claves de una matriz.

SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';

Resultado:

+--------+
| Result |
+--------+
| NULL   |
+--------+

Sin embargo, si alguno de los elementos de la matriz contiene un objeto, aún puede usar la path argumento para obtener las claves de ese objeto.

SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';

Resultado:

+------------+
| Result     |
+------------+
| ["a", "b"] |
+------------+

Ejemplo 5:Objetos vacíos

Si el objeto seleccionado está vacío, obtendrá una matriz vacía.

SELECT JSON_KEYS('{}') AS 'Result';

Resultado:

+--------+
| Result |
+--------+
| []     |
+--------+