No MySQL, o
JSON_TYPE()
A função retorna o tipo de um valor JSON. Mais especificamente, ele retorna um utf8mb4
string indicando o tipo do valor. Você fornece o valor JSON como um argumento.
Sintaxe
A sintaxe fica assim:
JSON_TYPE(json_val)
Onde
json_val
é o valor JSON para o qual retornar o tipo. Pode ser um objeto, uma matriz ou um tipo escalar. Exemplo 1 – Objeto
Aqui está um exemplo quando o valor é um objeto.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_TYPE(@data) 'JSON Type';
Resultado:
+-----------+ | JSON Type | +-----------+ | OBJECT | +-----------+
Exemplo 2 – Matriz
Aqui está um exemplo de matriz.
SET @data = '[1, 2, 3]'; SELECT JSON_TYPE(@data) 'JSON Type';
Resultado:
+-----------+ | JSON Type | +-----------+ | ARRAY | +-----------+
Exemplo 3 – Extrair dados de um array
Você também pode obter o tipo dos elementos individuais na 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 | +------+-----------+
Exemplo 4 – Extrair dados de um objeto
O mesmo se aplica aos membros de um 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 | +--------+-----------+
Nesse caso, o valor era o literal de string
"True"
. Aqui está outro exemplo, mas desta vez usando o 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 | +------+-----------+
Exemplo 5 – Consulta de banco de dados
Este exemplo usa uma coluna de banco de dados.
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 | +--------------------------------+----------+--------+