Dans MySQL, le JSON_TYPE()
La fonction renvoie le type d'une valeur JSON. Plus précisément, il renvoie un utf8mb4
chaîne indiquant le type de la valeur.
Vous fournissez la valeur JSON comme argument.
Syntaxe
La syntaxe ressemble à ceci :
JSON_TYPE(json_val)
Où json_val
est la valeur JSON pour laquelle renvoyer le type. Cela peut être un objet, un tableau ou un type scalaire.
Exemple 1 – Objet
Voici un exemple où la valeur est un objet.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_TYPE(@data) 'JSON Type';
Résultat :
+-----------+ | JSON Type | +-----------+ | OBJECT | +-----------+
Exemple 2 – Tableau
Voici un exemple de tableau.
SET @data = '[1, 2, 3]'; SELECT JSON_TYPE(@data) 'JSON Type';
Résultat :
+-----------+ | JSON Type | +-----------+ | ARRAY | +-----------+
Exemple 3 - Extraire des données d'un tableau
Vous pouvez également obtenir le type des éléments individuels du tableau.
SET @data = '[1, 2, 3]'; SELECT JSON_EXTRACT(@data, '$[1]') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$[1]')) 'JSON Type';
Résultat :
+------+-----------+ | Data | JSON Type | +------+-----------+ | 2 | INTEGER | +------+-----------+
Exemple 4 - Extraire des données d'un objet
Il en va de même pour les membres d'un objet.
SET @data = '{"Name": "Homer", "Stupid": "True"}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Résultat :
+--------+-----------+ | Data | JSON Type | +--------+-----------+ | "True" | STRING | +--------+-----------+
Dans ce cas, la valeur était la chaîne littérale "True"
.
Voici un autre exemple, mais cette fois en utilisant la valeur booléenne true
.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Résultat :
+------+-----------+ | Data | JSON Type | +------+-----------+ | true | BOOLEAN | +------+-----------+
Exemple 5 - Requête de base de données
Cet exemple utilise une colonne de base de données.
SELECT Contents, JSON_TYPE(Contents) 'Contents', JSON_TYPE(JSON_EXTRACT(Contents, '$.Name')) 'Name' FROM Collections WHERE CollectionId = 4;
Résultat :
+--------------------------------+----------+--------+ | Contents | Contents | Name | +--------------------------------+----------+--------+ | {"Name": "Homer", "Stupid": 1} | OBJECT | STRING | +--------------------------------+----------+--------+