No MySQL, o
JSON_LENGTH()
A função retorna o comprimento de um documento JSON. Ao chamar essa função, você fornece o documento JSON como argumento. Você também pode fornecer um argumento de caminho para retornar o comprimento de um valor dentro do documento.
Sintaxe
A sintaxe fica assim:
JSON_LENGTH(json_doc[, path])
Onde
json_doc
é o documento JSON para o qual retornar a profundidade e path
é um argumento opcional que pode ser usado para retornar o comprimento de um valor dentro do documento. Exemplo 1 – Objeto vazio
Aqui está um documento JSON que contém nada além de um objeto vazio.
SELECT JSON_LENGTH('{}') 'Result';
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
Exemplo 2 – Objeto com dados
E aqui está o que acontece se adicionarmos dados.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Resultado:
+--------+ | Result | +--------+ | 1 | +--------+
Isso retorna
1
porque o objeto contém um membro. Se adicionarmos um segundo membro, eis o que acontece:SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Resultado:
+--------+ | Result | +--------+ | 2 | +--------+
Exemplo 3 – Matrizes
O comprimento de uma matriz é o número de elementos que ela contém.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Isso é verdade, mesmo que um dos elementos contenha seu próprio array (ou objeto).
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Exemplo 4 – O argumento do caminho
Podemos fornecer um
path
opcional argumento para retornar o comprimento de um determinado caminho dentro do documento. SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Nesse caso, retornamos o comprimento da
Person
objeto, que contém três membros. Se restringirmos a apenas um desses membros (digamos, o
Name
membro), obtemos isso:SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Resultado:
+--------+ | Result | +--------+ | 1 | +--------+
Mas se restringirmos aos
Hobbies
matriz, obtemos isso:SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Resultado:
+--------+ | Result | +--------+ | 2 | +--------+