I MySQL er JSON_TYPE() funktion returnerer typen af en JSON-værdi. Mere specifikt returnerer den en utf8mb4 streng, der angiver værdiens type.
Du angiver JSON-værdien som et argument.
Syntaks
Syntaksen ser sådan ud:
JSON_TYPE(json_val)
Hvor json_val er den JSON-værdi, som typen skal returneres for. Dette kan være et objekt, en matrix eller en skalartype.
Eksempel 1 – Objekt
Her er et eksempel, når værdien er et objekt.
SET @data = '{"Name": "Homer", "Stupid": true}';
SELECT JSON_TYPE(@data) 'JSON Type';
Resultat:
+-----------+ | JSON Type | +-----------+ | OBJECT | +-----------+
Eksempel 2 – Array
Her er et array-eksempel.
SET @data = '[1, 2, 3]'; SELECT JSON_TYPE(@data) 'JSON Type';
Resultat:
+-----------+ | JSON Type | +-----------+ | ARRAY | +-----------+
Eksempel 3 – Udtræk data fra et array
Du kan også få typen af de enkelte elementer i arrayet.
SET @data = '[1, 2, 3]'; SELECT JSON_EXTRACT(@data, '$[1]') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$[1]')) 'JSON Type';
Resultat:
+------+-----------+ | Data | JSON Type | +------+-----------+ | 2 | INTEGER | +------+-----------+
Eksempel 4 – Udtræk data fra et objekt
Det samme gælder for medlemmer af et objekt.
SET @data = '{"Name": "Homer", "Stupid": "True"}';
SELECT
JSON_EXTRACT(@data, '$.Stupid') 'Data',
JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Resultat:
+--------+-----------+ | Data | JSON Type | +--------+-----------+ | "True" | STRING | +--------+-----------+
I så fald var værdien den bogstavelige streng "True" .
Her er et andet eksempel, men denne gang ved at bruge den boolske værdi true .
SET @data = '{"Name": "Homer", "Stupid": true}';
SELECT
JSON_EXTRACT(@data, '$.Stupid') 'Data',
JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Resultat:
+------+-----------+ | Data | JSON Type | +------+-----------+ | true | BOOLEAN | +------+-----------+
Eksempel 5 – Databaseforespørgsel
Dette eksempel bruger en databasekolonne.
SELECT Contents, JSON_TYPE(Contents) 'Contents', JSON_TYPE(JSON_EXTRACT(Contents, '$.Name')) 'Name' FROM Collections WHERE CollectionId = 4;
Resultat:
+--------------------------------+----------+--------+
| Contents | Contents | Name |
+--------------------------------+----------+--------+
| {"Name": "Homer", "Stupid": 1} | OBJECT | STRING |
+--------------------------------+----------+--------+