In MySQL, il JSON_TYPE()
La funzione restituisce il tipo di un valore JSON. Più specificamente, restituisce un utf8mb4
stringa che indica il tipo del valore.
Fornisci il valore JSON come argomento.
Sintassi
La sintassi è questa:
JSON_TYPE(json_val)
Dove json_val
è il valore JSON per il quale restituire il tipo. Può essere un oggetto, un array o un tipo scalare.
Esempio 1 – Oggetto
Ecco un esempio in cui il valore è un oggetto.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_TYPE(@data) 'JSON Type';
Risultato:
+-----------+ | JSON Type | +-----------+ | OBJECT | +-----------+
Esempio 2 – Matrice
Ecco un esempio di array.
SET @data = '[1, 2, 3]'; SELECT JSON_TYPE(@data) 'JSON Type';
Risultato:
+-----------+ | JSON Type | +-----------+ | ARRAY | +-----------+
Esempio 3:estrazione di dati da un array
Puoi anche ottenere il tipo dei singoli elementi nell'array.
SET @data = '[1, 2, 3]'; SELECT JSON_EXTRACT(@data, '$[1]') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$[1]')) 'JSON Type';
Risultato:
+------+-----------+ | Data | JSON Type | +------+-----------+ | 2 | INTEGER | +------+-----------+
Esempio 4 – Estrarre dati da un oggetto
Lo stesso vale per i membri di un oggetto.
SET @data = '{"Name": "Homer", "Stupid": "True"}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Risultato:
+--------+-----------+ | Data | JSON Type | +--------+-----------+ | "True" | STRING | +--------+-----------+
In quel caso, il valore era la stringa letterale "True"
.
Ecco un altro esempio, ma questa volta utilizzando il valore booleano true
.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Risultato:
+------+-----------+ | Data | JSON Type | +------+-----------+ | true | BOOLEAN | +------+-----------+
Esempio 5 – Query database
Questo esempio utilizza una colonna del database.
SELECT Contents, JSON_TYPE(Contents) 'Contents', JSON_TYPE(JSON_EXTRACT(Contents, '$.Name')) 'Name' FROM Collections WHERE CollectionId = 4;
Risultato:
+--------------------------------+----------+--------+ | Contents | Contents | Name | +--------------------------------+----------+--------+ | {"Name": "Homer", "Stupid": 1} | OBJECT | STRING | +--------------------------------+----------+--------+