V MariaDB, JSON_DETAILED() je vestavěná funkce, která vezme dokument JSON a vrátí jej ve formátu lépe čitelném pro člověka.
Někdy se tomu říká zkrášlování dokumentu. Je to podobné jako JSON_PRETTY() MySQL funkce.
Pro opačný efekt (tj. zhuštění dokumentu JSON dolů) použijte JSON_COMPACT() funkce.
Syntaxe
Syntaxe vypadá takto:
JSON_DETAILED(json_doc[, tab_size])
Kde json_doc je dokument JSON a tab_size je volitelná hodnota, která určuje velikost tabulátoru/odsazení.
Příklad
Zde je příklad k demonstraci.
SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';
SELECT JSON_DETAILED(@json_document); Výsledek:
+----------------------------------------+
| JSON_DETAILED(@json_document) |
+----------------------------------------+
| {
"name": "Wag",
"type": "Dog",
"weight": 20
} |
+----------------------------------------+ Původní dokument je celý na jednom řádku, bez tabulátorů/odsazení nebo jiného formátování.
Výsledek je rozložen na více řádcích a obsahuje tabulátory/odrážky, což nám lidem usnadňuje čtení dokumentu.
Vnořené struktury
Zde je několik dalších příkladů, tentokrát s vnořenými strukturami:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document); Výsledek:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} |
+---------------------------------------+ A další:
SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';
SELECT JSON_DETAILED(@json_document); Výsledek:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 2,
"specs":
{
"height": 400,
"weight": 15,
"color": "brown"
}
} |
+---------------------------------------+ Velikost karty
Máte také možnost určit velikost karty. Chcete-li to provést, předejte požadovanou velikost karty jako druhý argument.
Příklad
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 1); Výsledek:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} A je to tady znovu, ale s větší velikostí záložky:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 10); Výsledek:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Větší dokument JSON
Zde je příklad s mírně větším 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); Výsledek:
{
"_id": 1,
"name": "Wag",
"details":
{
"type": "Dog",
"weight": 20,
"awards":
{
"Florida Dog Awards": "Top Dog",
"New York Marathon": "Fastest Dog",
"Sumo 2020": "Biggest Dog"
}
}
} Nulový argument
Pokud je argument NULL , výsledkem je NULL :
SELECT JSON_DETAILED(null); Výsledek:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
Nesprávný počet parametrů
Pokud neposkytnete žádné argumenty, dojde k chybě:
SELECT JSON_DETAILED(); Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
Je to stejné, když uvedete příliš mnoho argumentů:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2); Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'