В MariaDB, JSON_DETAILED() е вградена функция, която приема JSON документ и го връща в по-четим от човека формат.
Това понякога се нарича претифициране на документа. Той е подобен на JSON_PRETTY() на MySQL функция.
За обратния ефект (т.е. за уплътняване на JSON документ надолу), използвайте JSON_COMPACT() функция.
Синтаксис
Синтаксисът е така:
JSON_DETAILED(json_doc[, tab_size])
Където json_doc е JSON документът и tab_size е незадължителна стойност, която определя размера на раздела/отстъпите.
Пример
Ето пример за демонстрация.
SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';
SELECT JSON_DETAILED(@json_document); Резултат:
+----------------------------------------+
| JSON_DETAILED(@json_document) |
+----------------------------------------+
| {
"name": "Wag",
"type": "Dog",
"weight": 20
} |
+----------------------------------------+ Оригиналният документ е на един ред, без табулации/отстъпи или друго форматиране.
Резултатът е разпределен на няколко реда и съдържа табулатори/отстъпи, което прави документа по-лесен за четене от нас, хората.
Вложени структури
Ето още няколко примера, този път с вложени структури:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document); Резултат:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} |
+---------------------------------------+ И още едно:
SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';
SELECT JSON_DETAILED(@json_document); Резултат:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 2,
"specs":
{
"height": 400,
"weight": 15,
"color": "brown"
}
} |
+---------------------------------------+ Размер на раздел
Освен това имате възможност да посочите размера на раздела. За да направите това, предайте желания размер на раздела като втори аргумент.
Пример
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 1); Резултат:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} И ето го отново, но с по-голям размер на раздела:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 10); Резултат:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} По-голям JSON документ
Ето пример с малко по-голям 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); Резултат:
{
"_id": 1,
"name": "Wag",
"details":
{
"type": "Dog",
"weight": 20,
"awards":
{
"Florida Dog Awards": "Top Dog",
"New York Marathon": "Fastest Dog",
"Sumo 2020": "Biggest Dog"
}
}
} Нулев аргумент
Ако аргументът е NULL , резултатът е NULL :
SELECT JSON_DETAILED(null); Резултат:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
Неправилен брой параметри
Предоставянето на без аргументи води до грешка:
SELECT JSON_DETAILED(); Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
Същото е, когато предоставите твърде много аргументи:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2); Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'