No MariaDB,
JSON_OBJECT()
é uma função interna que retorna um objeto JSON contendo os pares chave/valor fornecidos como argumentos. Sintaxe
A sintaxe fica assim:
JSON_OBJECT([key, value[, key, value] ...])
A função aceita qualquer número de pares chave/valor.
A lista de chave/valor também pode estar vazia.
Exemplo
Aqui está um exemplo simples para demonstrar a função:
SELECT JSON_OBJECT("name", "Homer", "type", "Idiot");
Resultado:
+-----------------------------------------------+ | JSON_OBJECT("name", "Homer", "type", "Idiot") | +-----------------------------------------------+ | {"name": "Homer", "type": "Idiot"} | +-----------------------------------------------+
Sem argumentos
Como mencionado, a lista de argumentos pode estar vazia, nesse caso, um objeto vazio será retornado:
SELECT JSON_OBJECT();
Resultado:
+---------------+ | JSON_OBJECT() | +---------------+ | {} | +---------------+
Contagem de parâmetros incorreta
No entanto, se você fornecer argumentos, eles devem ser um número par de argumentos (para que cada chave tenha um valor correspondente).
Aqui está o que acontece quando eu passo apenas um argumento para
JSON_OBJECT()
:SELECT JSON_OBJECT("name");
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_OBJECT'
O mesmo erro ocorre se eu passar três argumentos:
SELECT JSON_OBJECT("name", "Homer", "type");
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_OBJECT'
E assim por diante…
Nomes de chave nulos
A documentação do MariaDB afirma que um erro é retornado se qualquer nome de chave for
NULL
. No entanto, recebo um resultado diferente:
SELECT JSON_OBJECT(null, null);
Resultado:
+-------------------------+ | JSON_OBJECT(null, null) | +-------------------------+ | {"": null} | +-------------------------+