V MariaDB, JSON_ARRAY_APPEND() je vestavěná funkce, která připojuje hodnoty na konec zadaného pole/polí v dokumentu JSON a vrací výsledek.
Syntaxe
Syntaxe vypadá takto:
JSON_ARRAY_APPEND(json_doc, path, value[, path, value] ...)
Kde json_doc je dokument JSON, path je cesta k místu, kam chcete připojit hodnotu/y a value je hodnota k připojení.
Příklad
Zde je příklad pro demonstraci funkce.
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4); Výsledek:
+--------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', 4) | +--------------------------------------+ | [0, 1, 2, 3, 4] | +--------------------------------------+
V tomto případě hodnota 4 byl připojen na konec pole.
Připojit více hodnot
K JSON_ARRAY_APPEND() můžete v rámci jednoho volání připojit více hodnot .
Příklad:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5); Výsledek:
+----------------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5) | +----------------------------------------------+ | [0, 1, 2, 3, 4, 5] | +----------------------------------------------+
Více polí
Hodnoty můžete připojit k více než jednomu poli v rámci stejného volání JSON_ARRAY_APPEND() .
Příklad:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5); Výsledek:
+--------------------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5) |
+--------------------------------------------------+
| {"a": [0, 1, 4], "b": [2, 3, 5]} |
+--------------------------------------------------+ Vnořená pole
Zde je příklad připojení hodnoty k vnořenému poli:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[2]', 4); Výsledek:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$[2]', 4) | +-----------------------------------------+ | [0, 1, [2, 3, 4]] | +-----------------------------------------+
A v následujícím příkladu původní dokument JSON neobsahuje vnořené pole, ale JSON_ARRAY_APPEND() vytvoří vnořené pole na základě naší cesty:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4); Výsledek:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$[3]', 4) | +-----------------------------------------+ | [0, 1, 2, [3, 4]] | +-----------------------------------------+
Větší dokument JSON
Zde je příklad s mírně větším dokumentem JSON.
Také používám JSON_DETAILED() pro zkrášlení výsledku:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Chicken"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet',
'Water')
); Výsledek:
{
"pet":
{
"name": "Fluffy",
"diet":
[
"Fish",
"Chicken",
"Water"
]
}
} A tady je jeden, který vytváří vnořené pole:
SET @json_doc = '{
"pet": {
"name": "Scratch",
"diet": ["Beef", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet[1]',
'Beer')
); Výsledek:
{
"pet":
{
"name": "Scratch",
"diet":
[
"Beef",
[
"Water",
"Beer"
]
]
}
} Nulové argumenty
Pokud je první argument NULL , výsledkem je NULL :
SELECT JSON_ARRAY_APPEND(null, '$', 4); Výsledek:
+---------------------------------+ | JSON_ARRAY_APPEND(null, '$', 4) | +---------------------------------+ | NULL | +---------------------------------+
Totéž platí pro path argument:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, null, 4); Výsledek:
+---------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, null, 4) | +---------------------------------------+ | NULL | +---------------------------------------+
Pokud však value argument je NULL a poté NULL je připojen k poli:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', null); Výsledek:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', null) | +-----------------------------------------+ | [0, 1, 2, 3, null] | +-----------------------------------------+
Můžete také použít JSON_ARRAY_INSERT() pro vložení hodnot do pole.