MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB JSON_DETAILED() erklärt

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'