W MariaDB, JSON_LOOSE()
to wbudowana funkcja, która dodaje spacje do dokumentu JSON, aby uczynić go bardziej czytelnym.
Jest podobny do JSON_DETAILED()
funkcji, z wyjątkiem tego, że nie podkreśla zagnieżdżonych struktur w sposób, w jaki JSON_DETAILED()
tak.
Aby uzyskać efekt odwrotny (tj. Aby usunąć niepotrzebne spacje), użyj JSON_COMPACT()
funkcja.
Składnia
Składnia wygląda tak:
JSON_LOOSE(json_doc)
Gdzie json_doc
jest dokumentem JSON.
Przykład
Oto przykład do zademonstrowania.
SET @json = '{"name":"Wag","type":"Dog"}';
SELECT JSON_LOOSE(@json);
Wynik:
+--------------------------------+ | JSON_LOOSE(@json) | +--------------------------------+ | {"name": "Wag", "type": "Dog"} | +--------------------------------+
Oryginalny dokument nie zawiera spacji, ale wynik JSON_LOOSE()
zawiera spacje..
Tutaj ponownie porównano z oryginalnym dokumentem:
SET @json = '{"name":"Wag","type":"Dog"}';
SELECT
@json AS 'Original',
JSON_LOOSE(@json) AS 'Modified';
Wynik:
+-----------------------------+--------------------------------+ | Original | Modified | +-----------------------------+--------------------------------+ | {"name":"Wag","type":"Dog"} | {"name": "Wag", "type": "Dog"} | +-----------------------------+--------------------------------+
Obiekty i tablice
Oto przykład z obiektem i tablicą, aby pokazać, że nie zapewnia żadnego dodatkowego formatowania dla takich struktur.
SET @json = '{"specs":{"w":10,"h":30},"scores":[1,2,3]}';
SELECT JSON_LOOSE(@json);
Wynik:
+----------------------------------------------------+ | JSON_LOOSE(@json) | +----------------------------------------------------+ | {"specs": {"w": 10, "h": 30}, "scores": [1, 2, 3]} | +----------------------------------------------------+
Jeśli potrzebujesz dodatkowego formatowania dla tych struktur, wypróbuj JSON_DETAILED()
funkcja.
Argument zerowy
Jeśli argumentem jest NULL
, wynik to NULL
:
SELECT JSON_LOOSE(null);
Wynik:
+------------------+ | JSON_LOOSE(null) | +------------------+ | NULL | +------------------+
Nieprawidłowa liczba parametrów
Brak argumentów skutkuje błędem:
SELECT JSON_LOOSE();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'
Tak samo jest, gdy podajesz zbyt wiele argumentów:
SELECT JSON_LOOSE('{"a":1}', 2);
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'