No SQLite, o
json_array()
A função retorna uma matriz JSON bem formada com base em seus argumentos. A função aceita zero ou mais argumentos e cada argumento se torna um elemento na matriz resultante.
Sintaxe
json_array(value1,value2,...)
Onde
value1, value2, ...
representa os elementos da matriz para a matriz resultante. Exemplo
Aqui está um exemplo simples para demonstrar:
SELECT json_array( 9, 7, 12, 11 );
Resultado:
[9,7,12,11]
Adicionar aspas a um número resulta nesse elemento da matriz sendo uma string JSON entre aspas:
SELECT json_array( 9, '7', 12, 11 );
Resultado:
[9,"7",12,11]
Passando objetos JSON
Passar um argumento com o tipo SQL TEXT resulta em uma string JSON entre aspas, com quaisquer rótulos entre aspas sendo escapados:
SELECT json_array( '{ "a" : 1 }' );
Resultado:
["{ \"a\" : 1 }"]
Se não quisermos que isso aconteça, podemos usar o
json()
função para fornecer o valor como um documento JSON válido:SELECT json_array( json('{ "a" : 1 }') );
Resultado:
[{"a":1}]
Outra maneira de fazer isso é usar o
->
do SQLite operador:SELECT json_array( '{ "a" : 1 }' -> '$' );
Resultado:
[{"a":1}]
Alternativamente, podemos usar o
json_object()
função:SELECT json_array( json_object( 'a', 1 ) );
Resultado:
[{"a":1}]
Aqui está com alguns outros elementos da matriz:
SELECT json_array( "Cat", json_object( 'a', 1 ), "Dog" );
Resultado:
["Cat",{"a":1},"Dog"]
Passando matrizes JSON
É algo semelhante ao passar matrizes JSON:
SELECT json_array( '[ 9, 4, 7 ]' );
Resultado:
["[ 9, 4, 7 ]"]
Nesse caso, obtemos um array JSON que contém uma string que se assemelha a outro array.
Para retornar um array JSON real, podemos passar nosso argumento para o
json()
função:SELECT json_array( json('[ 9, 4, 7 ]') );
Resultado:
[[9,4,7]]
Também podemos usar o
->
operador:SELECT json_array( '[ 9, 4, 7 ]' -> '$' );
Resultado:
[[9,4,7]]
Alternativamente, podemos passar os valores para outro
json_array()
:SELECT json_array( json_array( 9, 4, 7 ) );
Resultado:
[[9,4,7]]
Aqui está com alguns outros elementos da matriz:
SELECT json_array( "Cat", json_array( 9, 4, 7 ), "Dog" );
Resultado:
["Cat",[9,4,7],"Dog"]
Criar uma matriz vazia
Chamando
json_array()
sem passar nenhum argumento resulta em uma matriz vazia:SELECT json_array();
Resultado:
[]