I MariaDB, JSON_LOOSE()
är en inbyggd funktion som lägger till mellanslag i ett JSON-dokument för att göra det mer läsbart.
Det liknar JSON_DETAILED()
funktion, förutom att den inte betonar kapslade strukturer på det sätt som JSON_DETAILED()
gör.
Använd JSON_COMPACT()
för motsatt effekt (d.v.s. att ta bort onödiga blanksteg) funktion.
Syntax
Syntaxen ser ut så här:
JSON_LOOSE(json_doc)
Där json_doc
är JSON-dokumentet.
Exempel
Här är ett exempel att visa.
SET @json = '{"name":"Wag","type":"Dog"}';
SELECT JSON_LOOSE(@json);
Resultat:
+--------------------------------+ | JSON_LOOSE(@json) | +--------------------------------+ | {"name": "Wag", "type": "Dog"} | +--------------------------------+
Originaldokumentet innehåller inga blanksteg, men resultatet av JSON_LOOSE()
innehåller mellanslag..
Här jämförs det igen med originaldokumentet:
SET @json = '{"name":"Wag","type":"Dog"}';
SELECT
@json AS 'Original',
JSON_LOOSE(@json) AS 'Modified';
Resultat:
+-----------------------------+--------------------------------+ | Original | Modified | +-----------------------------+--------------------------------+ | {"name":"Wag","type":"Dog"} | {"name": "Wag", "type": "Dog"} | +-----------------------------+--------------------------------+
Objekt och matriser
Här är ett exempel med ett objekt och en array, bara för att visa att det inte ger någon extra formatering för sådana strukturer.
SET @json = '{"specs":{"w":10,"h":30},"scores":[1,2,3]}';
SELECT JSON_LOOSE(@json);
Resultat:
+----------------------------------------------------+ | JSON_LOOSE(@json) | +----------------------------------------------------+ | {"specs": {"w": 10, "h": 30}, "scores": [1, 2, 3]} | +----------------------------------------------------+
Om du behöver extra formatering för dessa strukturer, prova JSON_DETAILED()
funktion.
Nollargument
Om argumentet är NULL
, resultatet är NULL
:
SELECT JSON_LOOSE(null);
Resultat:
+------------------+ | JSON_LOOSE(null) | +------------------+ | NULL | +------------------+
Felaktig parameterräkning
Att inte tillhandahålla några argument resulterar i ett fel:
SELECT JSON_LOOSE();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'
Det är samma sak när du ger för många argument:
SELECT JSON_LOOSE('{"a":1}', 2);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'