MySQL
JSON
Zoeken…
Invoering
Opmerkingen
Vanaf MySQL 5.7.8 wordt MySQL geleverd met een JSON-type. Veel ontwikkelaars hebben JSON-gegevens opgeslagen in tekstkolommen voor een logtijd, maar het JSON-type is anders, de gegevens worden na validatie in binair formaat opgeslagen. Dat vermijdt de overhead van het ontleden van de tekst bij elke gelezen.
Maak een eenvoudige tabel met een primaire sleutel en een JSON-veld
CREATE TABLE table_name (
id INT NOT NULL AUTO_INCREMENT,
json_col JSON,
PRIMARY KEY(id)
);
Voeg een eenvoudige JSON in
INSERT INTO
table_name (json_col)
VALUES
('{"City": "Galle", "Description": "Best damn city in the world"}');
Dat is eenvoudig, maar merk op dat omdat JSON-woordenboeksleutels omgeven moeten zijn door dubbele aanhalingstekens, het hele ding in enkele aanhalingstekens moet worden ingepakt. Als de zoekopdracht slaagt, worden de gegevens binair opgeslagen.
Voeg gemengde gegevens in een JSON-veld in.
Hiermee wordt een json-woordenboek ingevoegd waarbij een van de leden een reeks tekenreeksen in de tabel bevat die in een ander voorbeeld is gemaakt.
INSERT INTO myjson(dict)
VALUES('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}');
Merk nogmaals op dat u voorzichtig moet zijn met het gebruik van enkele en dubbele aanhalingstekens. Het hele ding moet in enkele aanhalingstekens worden verpakt.
Een JSON-veld bijwerken
In het vorige voorbeeld zagen we hoe gemengde gegevenstypen in een JSON-veld kunnen worden ingevoegd. Wat als we dat veld willen bijwerken? We gaan scheveningen toevoegen aan de array met de naam variations
in het vorige voorbeeld.
UPDATE
myjson
SET
dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen')
WHERE
id = 2;
Opmerkingen:
- De
$.variations
array in ons json-woordenboek. Het $ symbool vertegenwoordigt de json-documentatie. Raadpleeg https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html voor een volledige uitleg van json-paden die door mysql worden herkend - Aangezien we nog geen voorbeeld hebben voor het opvragen van json-velden, gebruikt dit voorbeeld de primaire sleutel.
Als we nu SELECT * FROM myjson
, zullen we het zien
+----+-----------------------------------------------------------------------------------------+
| id | dict |
+---+-----------------------------------------------------------------------------------------+
| 2 | {"opening": "Sicilian", "variations": ["pelikan", "dragon", "najdorf", "scheveningen"]} |
+----+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
CAST-gegevens naar JSON-type
Dit converteert geldige json-strings naar MySQL JSON-type:
SELECT CAST('[1,2,3]' as JSON) ;
SELECT CAST('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}' as JSON);
Maak Json Object and Array
JSON_OBJECT
maakt JSON-objecten:
SELECT JSON_OBJECT('key1',col1 , 'key2',col2 , 'key3','col3') as myobj;
JSON_ARRAY
maakt ook JSON Array:
SELECT JSON_ARRAY(col1,col2,'col3') as myarray;
Opmerking: myobj.key3 en myarray [2] zijn "col3" als vaste tekenreeks.
Ook gemengde JSON-gegevens:
SELECT JSON_OBJECT("opening","Sicilian", "variations",JSON_ARRAY("pelikan","dragon","najdorf") ) as mymixed ;