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'