sql >> Database >  >> RDS >> MariaDB

MariaDB JSON_DETAILED() uitgelegd

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'

  1. EM 12c Drempelwaarden aanpassen

  2. Postgres Kopiëren van variabele met CSV-gegevens

  3. Redenen om te upgraden naar SQL Server 2017

  4. PL/SQL-functie in Oracle kan DBMS_AQ niet zien