In MariaDB, JSON_DETAILED() ist eine integrierte Funktion, die ein JSON-Dokument nimmt und es in einem besser lesbaren Format zurückgibt.
Dies wird manchmal als Verschönern des Dokuments bezeichnet. Es ähnelt MySQLs JSON_PRETTY() Funktion.
Verwenden Sie für den gegenteiligen Effekt (d. h. um ein JSON-Dokument nach unten zu komprimieren) JSON_COMPACT() Funktion.
Syntax
Die Syntax lautet wie folgt:
JSON_DETAILED(json_doc[, tab_size])
Wobei json_doc ist das JSON-Dokument und tab_size ist ein optionaler Wert, der die Größe der Tabulatoren/Einzüge angibt.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';
SELECT JSON_DETAILED(@json_document); Ergebnis:
+----------------------------------------+
| JSON_DETAILED(@json_document) |
+----------------------------------------+
| {
"name": "Wag",
"type": "Dog",
"weight": 20
} |
+----------------------------------------+ Das Originaldokument befindet sich in einer Zeile, ohne Tabulatoren/Einzüge oder andere Formatierungen.
Das Ergebnis verteilt sich auf mehrere Zeilen und enthält Tabulatoren/Einzüge, was das Dokument für uns Menschen leichter lesbar macht.
Verschachtelte Strukturen
Hier sind ein paar weitere Beispiele, diesmal mit verschachtelten Strukturen:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document); Ergebnis:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} |
+---------------------------------------+ Und noch eins:
SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';
SELECT JSON_DETAILED(@json_document); Ergebnis:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 2,
"specs":
{
"height": 400,
"weight": 15,
"color": "brown"
}
} |
+---------------------------------------+ Tab-Größe
Sie haben auch die Möglichkeit, die Tabulatorgröße anzugeben. Übergeben Sie dazu als zweites Argument die gewünschte Tabulatorgröße.
Beispiel
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 1); Ergebnis:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Und hier ist es noch einmal, aber mit einer größeren Tabulatorgröße:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 10); Ergebnis:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Größeres JSON-Dokument
Hier ist ein Beispiel mit einem etwas größeren JSON-Dokument.
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); Ergebnis:
{
"_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-Argument
Wenn das Argument NULL ist , ist das Ergebnis NULL :
SELECT JSON_DETAILED(null); Ergebnis:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
Falsche Parameteranzahl
Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:
SELECT JSON_DETAILED(); Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
Das Gleiche gilt, wenn Sie zu viele Argumente angeben:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2); Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'