Le format JSON avec MySQL

Création d'une table avec un champ de type JSON

CREATE TABLE `log` (
   `id` int AUTO_INCREMENT,
   `message` longtext,
   `context` json,
   PRIMARY KEY (`id`)
);

Insertion des données de tests

INSERT INTO log (message, context) VALUES
('Ola les gens', '{"action": "alert", "user": "Jobi"}'),
('Bien ou bien ?', '{"action": "question", "user": "Joba"}'),
('Bravo !', '{"action": "success", "user": "Jobi"}');

Selects

Extraire la valeur d'une clé

SELECT JSON_EXTRACT(context, '$.user') AS username, message FROM log;

Supprimer les doubles quotes

SELECT JSON_UNQUOTE(JSON_EXTRACT(context, '$.user')) AS username, message FROM log;

Syntaxe alternative

SELECT context->'$.user' AS username, message FROM log;
-- Sans les doubles quotes
SELECT context->>'$.user' AS username, message FROM log;