V MySQL je to JSON_INSERT() funkce vloží hodnotu do dokumentu JSON a vrátí výsledek.
Jako první argument zadáte dokument JSON, za ním následuje cesta, do které se má vložit, a za ním hodnota, kterou chcete vložit.
Syntaxe
Syntaxe vypadá takto:
JSON_INSERT(json_doc, cesta, hodnota[, cesta, hodnota] ...)
Kde:
json_docje dokument JSON.pathje cesta prvku, pro který se má vložit nová hodnota.valje nová hodnota, která bude vložena.
Páry cesta-hodnota se vyhodnocují zleva doprava. Dokument vytvořený vyhodnocením jednoho páru se stane novou hodnotou, podle které je vyhodnocen další pár.
Příklad 1 – Základní použití
Zde je příklad k demonstraci.
SELECT JSON_INSERT('{"a":1, "b":2}', '$.c', 3) AS 'Result'; Výsledek:
+--------------------------+| Výsledek |+--------------------------+| {"a":1, "b":2, "c":3} |+--------------------------+
Takže 3. argument je vložen do pole na zadané cestě. V tomto případě používám $.c pro cestu a 3 pro hodnotu, která se má vložit. Výsledkem je pár klíč/hodnota "c": 3 .
Zde je další příklad:
SELECT JSON_INSERT('{"Jméno":"Homer", "Gender":"Muž"}', '$.Věk', 39) AS 'Výsledek';
Výsledek:
+---------------------------------------------- --+| Výsledek |+----------------------------------------------- -+| {"Věk":39, "Jméno":"Homer", "Pohlaví":"Muž"} |+------------------------- -----------------------+ Příklad 2 – Pokus o přepsání existující cesty
Pár cesta-hodnota pro existující cestu v dokumentu je ignorován a nepřepisuje stávající hodnotu dokumentu.
Pokud tedy upravíme předchozí příklad, abychom vložili hodnotu do Name (který již existuje), neproběhne žádné vložení:
SELECT JSON_INSERT('{"Jméno":"Homer", "Gender":"Muž"}', '$.Name', "Bart") JAKO 'Výsledek';
Výsledek:
+-------------------------------------+| Výsledek |+-------------------------------------+| {"Jméno":"Homer", "Gender":"Muž"} |+------------------------------- ------+ Příklad 3 – Pole
Hodnoty můžete do pole vložit pomocí cesty za konec existujícího pole. Příklad:
SELECT JSON_INSERT('[1, 2, 3]', '$[3]', 4) AS 'Výsledek';
Výsledek:
+---------------+| Výsledek |+---------------+| [1, 2, 3, 4] |+--------------+
Pokud však použijete cestu, která již v poli existuje, pole zůstane nezměněno:
SELECT JSON_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Výsledek';
Výsledek:
+------------+| Výsledek |+------------+| [1, 2, 3] |+------------+
Pokud existující hodnota není pole, je automaticky zabaleno jako pole a poté rozšířeno o novou hodnotu. Příklad:
SELECT JSON_INSERT('{"a":1, "b":2}', '$[2]', 3) AS 'Result';
Výsledek:
+-----------------------+| Výsledek |+-----------------------+| [{"a":1, "b":2}, 3] |+-----------------------+
Ale znovu, pokud se pokusíte vložit hodnotu do cesty, která již existuje, dokument JSON zůstane nezměněn:
SELECT JSON_INSERT('{"a":1, "b":2}', '$[0]', 3) AS 'Result';
Výsledek:
+-------------------+| Výsledek |+------------------+| {"a":1, "b":2} |+------------------+ Příklad 4 – Větší dokument JSON
Zde je příklad s (trochu) větším dokumentem JSON.
SET @data ='{ "Osoba":{ "Jméno":"Homer", "Hobby":["Jídlo", "Spánek"] } }';SELECT JSON_INSERT(@data, '$.Person. Hobbies[2]', "Base Jumping") JAKO 'Výsledek';
Výsledek:
+---------------------------------------------- ------------------------------------+| Výsledek |+----------------------------------------------- -----------------------------------+| {"Osoba":{"Jméno":"Homer", "Hobby":["Jídlo", "Spánek", "Base Jumping"]}} |+--------------- -------------------------------------------------- ------------------+
Viz také JSON_ARRAY_INSERT() a JSON_ARRAY_APPEND() pokud potřebujete vložit nebo připojit data do pole JSON.