W MariaDB, JSON_DETAILED() to wbudowana funkcja, która pobiera dokument JSON i zwraca go w formacie bardziej czytelnym dla człowieka.
Czasami nazywa się to upiększaniem dokumentu. Jest podobny do JSON_PRETTY() w MySQL funkcja.
Aby uzyskać efekt odwrotny (tj. skondensować dokument JSON), użyj JSON_COMPACT() funkcja.
Składnia
Składnia wygląda tak:
JSON_DETAILED(json_doc[, tab_size])
Gdzie json_doc jest dokumentem JSON, a tab_size jest opcjonalną wartością, która określa rozmiar tabulatora/wcięć.
Przykład
Oto przykład do zademonstrowania.
SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';
SELECT JSON_DETAILED(@json_document); Wynik:
+----------------------------------------+
| JSON_DETAILED(@json_document) |
+----------------------------------------+
| {
"name": "Wag",
"type": "Dog",
"weight": 20
} |
+----------------------------------------+ Oryginalny dokument znajduje się w jednym wierszu, bez tabulatorów/wcięć ani innego formatowania.
Wynik jest rozłożony na wiele wierszy i zawiera tabulatory/wcięcia, dzięki czemu dokument jest łatwiejszy do odczytania dla nas, ludzi.
Struktury zagnieżdżone
Oto jeszcze kilka przykładów, tym razem ze strukturami zagnieżdżonymi:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document); Wynik:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} |
+---------------------------------------+ I jeszcze:
SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';
SELECT JSON_DETAILED(@json_document); Wynik:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 2,
"specs":
{
"height": 400,
"weight": 15,
"color": "brown"
}
} |
+---------------------------------------+ Rozmiar karty
Masz również możliwość określenia rozmiaru zakładki. Aby to zrobić, przekaż żądany rozmiar tabulatora jako drugi argument.
Przykład
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 1); Wynik:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} I znowu, ale z większym rozmiarem zakładki:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 10); Wynik:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Większy dokument JSON
Oto przykład z nieco większym dokumentem JSON.
SET @json_document = '{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}';
SELECT JSON_DETAILED(@json_document); Wynik:
{
"_id": 1,
"name": "Wag",
"details":
{
"type": "Dog",
"weight": 20,
"awards":
{
"Florida Dog Awards": "Top Dog",
"New York Marathon": "Fastest Dog",
"Sumo 2020": "Biggest Dog"
}
}
} Argument zerowy
Jeśli argument to NULL , wynik to NULL :
SELECT JSON_DETAILED(null); Wynik:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
Nieprawidłowa liczba parametrów
Brak argumentów skutkuje błędem:
SELECT JSON_DETAILED(); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
Tak samo jest, gdy podajesz zbyt wiele argumentów:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'