Mysql
 sql >> Database >  >> RDS >> Mysql

JSON_KEYS() – Restituisce le chiavi da un oggetto JSON in MySQL

In MySQL, il JSON_KEYS() la funzione restituisce le chiavi dal valore di livello superiore di un oggetto JSON. Le chiavi vengono restituite come un array JSON o, se un path viene fornito l'argomento, le chiavi di primo livello dal percorso selezionato.

Fornisci il documento JSON come argomento per la funzione.

Puoi anche (facoltativamente) fornire un secondo argomento per specificare da dove inizia il percorso di "livello superiore" all'interno del documento JSON.

Sintassi

La sintassi è questa:

JSON_KEYS(json_doc[, path])

Dove json_doc è il documento JSON e il path è un argomento facoltativo per determinare dove inizia il percorso di "livello superiore" all'interno del documento JSON.

La matrice dei risultati è vuota se l'oggetto selezionato è vuoto. Se il valore di primo livello ha sottooggetti nidificati, il valore restituito non include le chiavi di tali sottooggetti.

Esempio 1 – Utilizzo di base

Ecco un esempio da dimostrare.

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

Risultato:

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

Ecco un altro esempio:

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

Risultato:

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

Esempio 2:specificare un percorso

Ecco un esempio di specifica di un percorso. Questo ci consente di ottenere le chiavi da un oggetto nidificato (invece di essere limitato solo all'oggetto di primo livello dell'intero documento JSON).

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

Risultato:

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

Esempio 3 – Percorso inesistente

Se specifichi un percorso che non esiste, viene restituito un valore NULL.

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

Risultato:

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

Otterrai anche un valore NULL se uno qualsiasi degli argomenti è NULL o se il primo argomento non è un oggetto JSON.

Esempio 4 – Matrici

Gli array non sono oggetti e non contengono coppie chiave/valore. Pertanto, otterrai un valore NULL se provi a restituire chiavi da un array.

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

Risultato:

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

Tuttavia, se uno qualsiasi degli elementi dell'array contiene un oggetto, puoi comunque utilizzare il path argomento per ottenere le chiavi da quell'oggetto.

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

Risultato:

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

Esempio 5 – Oggetti vuoti

Se l'oggetto selezionato è vuoto, otterrai un array vuoto.

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

Risultato:

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