In MariaDB, JSON_DETAILED() is een ingebouwde functie die een JSON-document neemt en dit teruggeeft in een meer voor mensen leesbare indeling.
Dit wordt soms het document mooier maken genoemd. Het is vergelijkbaar met MySQL's JSON_PRETTY() functie.
Voor het tegenovergestelde effect (d.w.z. om een JSON-document samen te vatten), gebruikt u de JSON_COMPACT() functie.
Syntaxis
De syntaxis gaat als volgt:
JSON_DETAILED(json_doc[, tab_size])
Waar json_doc is het JSON-document, en tab_size is een optionele waarde die de grootte van de tab/inspringingen specificeert.
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';
SELECT JSON_DETAILED(@json_document); Resultaat:
+----------------------------------------+
| JSON_DETAILED(@json_document) |
+----------------------------------------+
| {
"name": "Wag",
"type": "Dog",
"weight": 20
} |
+----------------------------------------+ Het originele document staat allemaal op één regel, zonder tabs/inspringingen of andere opmaak.
Het resultaat is verspreid over meerdere regels en bevat tabs/inspringingen, waardoor het document voor ons mensen gemakkelijker te lezen is.
Geneste structuren
Hier zijn nog een paar voorbeelden, dit keer met geneste structuren:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document); Resultaat:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} |
+---------------------------------------+ En nog een:
SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';
SELECT JSON_DETAILED(@json_document); Resultaat:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 2,
"specs":
{
"height": 400,
"weight": 15,
"color": "brown"
}
} |
+---------------------------------------+ Tabformaat
U heeft ook de mogelijkheid om de tabgrootte op te geven. Geef hiervoor de gewenste tabgrootte als tweede argument door.
Voorbeeld
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 1); Resultaat:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} En hier is hij weer, maar met een groter tabblad:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 10); Resultaat:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Groter JSON-document
Hier is een voorbeeld met een iets groter JSON-document.
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); Resultaat:
{
"_id": 1,
"name": "Wag",
"details":
{
"type": "Dog",
"weight": 20,
"awards":
{
"Florida Dog Awards": "Top Dog",
"New York Marathon": "Fastest Dog",
"Sumo 2020": "Biggest Dog"
}
}
} Nullargument
Als het argument NULL is , het resultaat is NULL :
SELECT JSON_DETAILED(null); Resultaat:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
Onjuist aantal parameters
Het verstrekken van geen argumenten resulteert in een fout:
SELECT JSON_DETAILED(); Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
Het is hetzelfde als je te veel argumenten geeft:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2); Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'