Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

JSON_KEYS() – Retorna as chaves de um objeto JSON no MySQL


No MySQL, o JSON_KEYS() A função retorna chaves do valor de nível superior de um objeto JSON. As chaves são retornadas como uma matriz JSON ou, se for um path for fornecido, as chaves de nível superior do caminho selecionado.

Você fornece o documento JSON como um argumento para a função.

Você também pode (opcionalmente) fornecer um segundo argumento para especificar onde o caminho de “nível superior” começa dentro do documento JSON.


Sintaxe


A sintaxe fica assim:
JSON_KEYS(json_doc[, path])

Onde json_doc é o documento JSON e o path é um argumento opcional para determinar onde o caminho de “nível superior” começa no documento JSON.

A matriz de resultados está vazia se o objeto selecionado estiver vazio. Se o valor de nível superior tiver subobjetos aninhados, o valor de retorno não incluirá chaves desses subobjetos.

Exemplo 1 – Uso básico


Aqui está um exemplo para demonstrar.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';

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

Aqui está outro exemplo:
SELECT 
  JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';

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

Exemplo 2 – Especificar um caminho


Aqui está um exemplo de especificação de um caminho. Isso nos permite obter as chaves de um objeto aninhado (em vez de ficar limitado apenas ao objeto de nível superior de todo o documento JSON).
SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';

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

Exemplo 3 – Caminho inexistente


Se você especificar um caminho que não existe, um valor NULL será retornado.
SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';

Resultado:
+--------+
| Result |
+--------+
| NULL   |
+--------+

Você também obterá um valor NULL se algum dos argumentos for NULL ou se o primeiro argumento não for um objeto JSON.

Exemplo 4 – Matrizes


Arrays não são objetos e não contêm pares de chave/valor. Portanto, você obterá um valor NULL se tentar retornar chaves de uma matriz.
SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';

Resultado:
+--------+
| Result |
+--------+
| NULL   |
+--------+

No entanto, se algum dos elementos do array contiver um objeto, você ainda poderá usar o path argumento para obter as chaves desse objeto.
SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';

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

Exemplo 5 – Objetos vazios


Se o objeto selecionado estiver vazio, você obterá um array vazio.
SELECT JSON_KEYS('{}') AS 'Result';

Resultado:
+--------+
| Result |
+--------+
| []     |
+--------+