En MySQL, JSON_TYPE()
La función devuelve el tipo de un valor JSON. Más específicamente, devuelve un utf8mb4
cadena que indica el tipo de valor.
Proporcionas el valor JSON como argumento.
Sintaxis
La sintaxis es así:
JSON_TYPE(json_val)
Donde json_val
es el valor JSON para el que devolver el tipo. Puede ser un objeto, una matriz o un tipo escalar.
Ejemplo 1 – Objeto
Aquí hay un ejemplo cuando el valor es un objeto.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_TYPE(@data) 'JSON Type';
Resultado:
+-----------+ | JSON Type | +-----------+ | OBJECT | +-----------+
Ejemplo 2:matriz
Aquí hay un ejemplo de matriz.
SET @data = '[1, 2, 3]'; SELECT JSON_TYPE(@data) 'JSON Type';
Resultado:
+-----------+ | JSON Type | +-----------+ | ARRAY | +-----------+
Ejemplo 3:extraer datos de una matriz
También puede obtener el tipo de los elementos individuales en la matriz.
SET @data = '[1, 2, 3]'; SELECT JSON_EXTRACT(@data, '$[1]') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$[1]')) 'JSON Type';
Resultado:
+------+-----------+ | Data | JSON Type | +------+-----------+ | 2 | INTEGER | +------+-----------+
Ejemplo 4:extraer datos de un objeto
Lo mismo se aplica a los miembros de un objeto.
SET @data = '{"Name": "Homer", "Stupid": "True"}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Resultado:
+--------+-----------+ | Data | JSON Type | +--------+-----------+ | "True" | STRING | +--------+-----------+
En ese caso, el valor era el literal de cadena "True"
.
Aquí hay otro ejemplo, pero esta vez usando el valor booleano true
.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Resultado:
+------+-----------+ | Data | JSON Type | +------+-----------+ | true | BOOLEAN | +------+-----------+
Ejemplo 5:consulta de base de datos
Este ejemplo usa una columna de base de datos.
SELECT Contents, JSON_TYPE(Contents) 'Contents', JSON_TYPE(JSON_EXTRACT(Contents, '$.Name')) 'Name' FROM Collections WHERE CollectionId = 4;
Resultado:
+--------------------------------+----------+--------+ | Contents | Contents | Name | +--------------------------------+----------+--------+ | {"Name": "Homer", "Stupid": 1} | OBJECT | STRING | +--------------------------------+----------+--------+