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.