I MariaDB, JSON_LOOSE()
er en indbygget funktion, der tilføjer mellemrum til et JSON-dokument for at gøre det mere læsbart.
Det ligner JSON_DETAILED()
funktion, bortset fra at den ikke understreger indlejrede strukturer på den måde, som JSON_DETAILED()
gør.
For den modsatte effekt (dvs. at fjerne unødvendige mellemrum), skal du bruge JSON_COMPACT()
funktion.
Syntaks
Syntaksen ser sådan ud:
JSON_LOOSE(json_doc)
Hvor json_doc
er JSON-dokumentet.
Eksempel
Her er et eksempel til at demonstrere.
SET @json = '{"name":"Wag","type":"Dog"}';
SELECT JSON_LOOSE(@json);
Resultat:
+--------------------------------+ | JSON_LOOSE(@json) | +--------------------------------+ | {"name": "Wag", "type": "Dog"} | +--------------------------------+
Det originale dokument indeholder ingen mellemrum, men resultatet af JSON_LOOSE()
indeholder mellemrum..
Her sammenlignes det igen med det originale dokument:
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"} | +-----------------------------+--------------------------------+
Objekter og arrays
Her er et eksempel med et objekt og et array, bare for at vise, at det ikke giver nogen ekstra formatering til sådanne 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]} | +----------------------------------------------------+
Hvis du har brug for ekstra formatering til disse strukturer, kan du prøve JSON_DETAILED()
funktion.
Nul-argument
Hvis argumentet er NULL
, resultatet er NULL
:
SELECT JSON_LOOSE(null);
Resultat:
+------------------+ | JSON_LOOSE(null) | +------------------+ | NULL | +------------------+
Forkert parameterantal
Angivelse af ingen argumenter resulterer i en fejl:
SELECT JSON_LOOSE();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'
Det er det samme, når du giver for mange argumenter:
SELECT JSON_LOOSE('{"a":1}', 2);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'