MariaDB starting with 10.2.7
----------------------------
The JSON alias was added in MariaDB 10.2.7. This was done to make it possible
to use JSON columns in statement based replication from MySQL to MariaDB and
to make it possible for MariaDB to read mysqldumps from MySQL.

JSON is an alias for LONGTEXT introduced for compatibility reasons with
MySQL's JSON data type. MariaDB implements this as a LONGTEXT rather, as the
JSON data type contradicts the SQL standard, and MariaDB's benchmarks indicate
that performance is at least equivalent.

In order to ensure that a a valid json document is inserted, the JSON_VALID
function can be used as a CHECK constraint. This constraint is automatically
included for types using the JSON alias from MariaDB 10.4.3.

Examples
--------

CREATE TABLE t (j JSON);

DESC t;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| j     | longtext | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+

With validation:

CREATE TABLE t2 (
 j JSON
 CHECK (JSON_VALID(j))
);

INSERT INTO t2 VALUES ('invalid');
ERROR 4025 (23000): CONSTRAINT `j` failed for `test`.`t2`

INSERT INTO t2 VALUES ('{"id": 1, "name": "Monty"}');
Query OK, 1 row affected (0.13 sec)

Replicating JSON Data Between MySQL and MariaDB
-----------------------------------------------

The JSON type in MySQL stores the JSON object in a compact form, not as
LONGTEXT as in MariaDB. This means that row based replication will not work
for JSON types from MySQL to MariaDB.

There are a a few different ways to solve this:

* Use statement based replication.
* Change the JSON column to type TEXT in MySQL
* If you must use row-based replication and cannot change the MySQL master
from JSON to TEXT, you can try to introduce an intermediate MySQL slave and
change the column type from JSON to TEXT on it. Then you replicate from this
intermediate slave to MariaDB.

Converting a MySQL TABLE with JSON Fields to MariaDB
----------------------------------------------------

MariaDB can't directly access MySQL's JSON format.

There are a a few different ways to move the table to MariaDB:

* From MariaDB 10.5.7, see the you can use the mysql_json plugin. See Making
MariaDB understand MySQL JSON.
* Change the JSON column to type TEXT in MySQL.  After this, MariaDB can
directly use the table without any need for a dump and restore.
* Use mariadb-dump/mysqldump to copy the table.

Differences Between MySQL JSON Strings and MariaDB JSON Strings
---------------------------------------------------------------

* In MySQL, JSON is an object and is compared according to json values. In
MariaDB JSON strings are normal strings and compared as strings. One exception
is when using JSON_EXTRACT() in which case strings are unescaped before
comparison.

URL: https://mariadb.com/kb/en/json-data-type/