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 | +--------+ | [] | +--------+