Resumo : neste tutorial, você aprenderá como usar a JSON_MERGE_PRESERVE()
função MySQL para mesclar dois ou mais documentos JSON.
Introdução à função JSON_MERGE_PRESERVE() do MySQL
A JSON_MERGE_PRESERVE()
função mescla dois ou mais documentos JSON e retorna um documento JSON mesclado, preservando a estrutura do documento JSON original.
Aqui está a sintaxe da JSON_MERGE_PRESERVE()
função:
JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
json_doc
: este é o documento JSON que você deseja mesclar. A função aceita dois ou maisjson_doc
argumentos.
A função retorna um documento JSON mesclado. Ele retorna NULL
se algum argumento for NULL
.
Se algum argumento não for um documento JSON válido, a função gerará um erro.
A função usa as seguintes regras para mesclar documentos JSON preservando a estrutura do documento JSON original:
- Matrizes adjacentes são mescladas em uma única matriz.
- Objetos adjacentes são mesclados em um único objeto.
- Um valor escalar é automaticamente agrupado como uma matriz e mesclado como uma matriz.
- Matrizes e objetos adjacentes são mesclados envolvendo automaticamente o objeto como uma matriz e, em seguida, mesclando as duas matrizes.
Para mesclar dois ou mais documentos JSON em um documento JSON enquanto descarta chaves duplicadas, você usa a função JSON_MERGE_PATCH() .
Exemplos de funções JSON_MERGE_PRESERVE() do MySQL
Vejamos alguns exemplos para entender como JSON_MERGE_PRESERVE()
funciona.
1) Mesclando arrays em um único array
O exemplo a seguir usa a JSON_MERGE_PRESERVE()
função para mesclar dois arrays em um único array:
SELECT
JSON_MERGE_PRESERVE('[1, 2]', '[3, 4]') result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------------+
| result |
+--------------+
| [1, 2, 3, 4] |
+--------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
2) Mesclando objetos em um único objeto
O exemplo a seguir usa a JSON_MERGE_PRESERVE()
função para mesclar dois objetos em um único objeto:
SELECT
JSON_MERGE_PRESERVE('{"name": "John Doe"}', '{"age": 25}') result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------------------------------+
| result |
+---------------------------------+
| {"age": 25, "name": "John Doe"} |
+---------------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
3) Mesclando escalares em um array
O exemplo a seguir usa a JSON_MERGE_PRESERVE()
função para mesclar dois valores escalares em uma matriz cujos elementos são os valores escalares:
SELECT
JSON_MERGE_PRESERVE('1', 'true') result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------+
| result |
+-----------+
| [1, true] |
+-----------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
4) Mesclando um array e um objeto em um array
O exemplo a seguir usa a JSON_MERGE_PRESERVE()
função para mesclar um array com um objeto e retornar um array que contém o objeto como o último elemento:
SELECT
JSON_MERGE_PRESERVE(
'["Jane", "John"]', '{"name": "Alice"}'
) result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-------------------------------------+
| result |
+-------------------------------------+
| ["Jane", "John", {"name": "Alice"}] |
+-------------------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
5) Mesclando objetos com as mesmas chaves
O exemplo a seguir usa a JSON_MERGE_PRESERVE()
função para mesclar dois objetos com a mesma chave e retornar um objeto com os valores são os arrays contendo os valores de cada objeto.
SELECT
JSON_MERGE_PRESERVE(
'{ "name": "Jane Doe", "age": 24 }',
'{ "name": "Jane Smith", "age": 25 }'
) result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-------------------------------------------------------+
| result |
+-------------------------------------------------------+
| {"age": [24, 25], "name": ["Jane Doe", "Jane Smith"]} |
+-------------------------------------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use a
JSON_MERGE_PRESERVE()
função para mesclar dois ou mais documentos JSON preservando a estrutura do documento JSON original.