I MariaDB, JSON_ARRAY_APPEND()
er en indbygget funktion, der tilføjer værdier til slutningen af de angivne arrays i et JSON-dokument og returnerer resultatet.
Syntaks
Syntaksen ser sådan ud:
JSON_ARRAY_APPEND(json_doc, path, value[, path, value] ...)
Hvor json_doc
er JSON-dokumentet, path
er stien til hvor du vil tilføje værdien/værdierne og value
er den værdi, der skal tilføjes.
Eksempel
Her er et eksempel for at demonstrere funktionen.
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4);
Resultat:
+--------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', 4) | +--------------------------------------+ | [0, 1, 2, 3, 4] | +--------------------------------------+
I dette tilfælde værdien 4
blev tilføjet til slutningen af arrayet.
Tilføj flere værdier
Du kan tilføje flere værdier inden for et enkelt opkald til JSON_ARRAY_APPEND()
.
Eksempel:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5);
Resultat:
+----------------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5) | +----------------------------------------------+ | [0, 1, 2, 3, 4, 5] | +----------------------------------------------+
Flere arrays
Du kan tilføje værdier til mere end én matrix inden for samme opkald til JSON_ARRAY_APPEND()
.
Eksempel:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5);
Resultat:
+--------------------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5) | +--------------------------------------------------+ | {"a": [0, 1, 4], "b": [2, 3, 5]} | +--------------------------------------------------+
Indlejrede arrays
Her er et eksempel på tilføjelse af en værdi til et indlejret array:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[2]', 4);
Resultat:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$[2]', 4) | +-----------------------------------------+ | [0, 1, [2, 3, 4]] | +-----------------------------------------+
Og i det følgende eksempel indeholder det originale JSON-dokument ikke et indlejret array, men JSON_ARRAY_APPEND()
opretter et indlejret array baseret på vores sti:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4);
Resultat:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$[3]', 4) | +-----------------------------------------+ | [0, 1, 2, [3, 4]] | +-----------------------------------------+
Større JSON-dokument
Her er et eksempel med et lidt større JSON-dokument.
Jeg bruger også JSON_DETAILED()
for at forskønne resultatet:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Chicken"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet',
'Water')
);
Resultat:
{ "pet": { "name": "Fluffy", "diet": [ "Fish", "Chicken", "Water" ] } }
Og her er en, der opretter et indlejret array:
SET @json_doc = '{
"pet": {
"name": "Scratch",
"diet": ["Beef", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet[1]',
'Beer')
);
Resultat:
{ "pet": { "name": "Scratch", "diet": [ "Beef", [ "Water", "Beer" ] ] } }
Nul-argumenter
Hvis det første argument er NULL
, resultatet er NULL
:
SELECT JSON_ARRAY_APPEND(null, '$', 4);
Resultat:
+---------------------------------+ | JSON_ARRAY_APPEND(null, '$', 4) | +---------------------------------+ | NULL | +---------------------------------+
Det samme gælder for path
argument:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, null, 4);
Resultat:
+---------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, null, 4) | +---------------------------------------+ | NULL | +---------------------------------------+
Men hvis value
argumentet er NULL
, derefter NULL
er tilføjet til arrayet:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', null);
Resultat:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', null) | +-----------------------------------------+ | [0, 1, 2, 3, null] | +-----------------------------------------+
Du kan også bruge JSON_ARRAY_INSERT()
for at indsætte værdier i en matrix.