sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB JSON_DETAILED() Forklaret

I MariaDB, JSON_DETAILED() er en indbygget funktion, der tager et JSON-dokument og returnerer det i et mere menneskeligt læsbart format.

Dette omtales nogle gange som at forskønne dokumentet. Det ligner MySQL's JSON_PRETTY() funktion.

For den modsatte effekt (dvs. at kondensere et JSON-dokument ned), skal du bruge JSON_COMPACT() funktion.

Syntaks

Syntaksen ser sådan ud:

JSON_DETAILED(json_doc[, tab_size])

Hvor json_doc er JSON-dokumentet og tab_size er en valgfri værdi, der angiver størrelsen på fanen/indrykningen.

Eksempel

Her er et eksempel til at demonstrere.

SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';

SELECT JSON_DETAILED(@json_document);

Resultat:

+----------------------------------------+
| JSON_DETAILED(@json_document)          |
+----------------------------------------+
| {
    "name": "Wag",
    "type": "Dog",
    "weight": 20
} |
+----------------------------------------+

Det originale dokument er alt på én linje, uden tabulatorer/indrykninger eller anden formatering.

Resultatet er spredt over flere linjer og indeholder tabulatorer/indrykninger, hvilket gør dokumentet lettere at læse for os mennesker.

Indlejrede strukturer

Her er et par eksempler mere, denne gang med indlejrede strukturer:

SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';

SELECT JSON_DETAILED(@json_document);

Resultat:

+---------------------------------------+
| JSON_DETAILED(@json_document)         |
+---------------------------------------+
| {
    "_id": 1,
    "awards": 
    [
        "Top Dog",
        "Best Dog",
        "Biggest Dog"
    ]
} |
+---------------------------------------+

Og en anden:

SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';

SELECT JSON_DETAILED(@json_document);

Resultat:

+---------------------------------------+
| JSON_DETAILED(@json_document)         |
+---------------------------------------+
| {
    "_id": 2,
    "specs": 
    {
        "height": 400,
        "weight": 15,
        "color": "brown"
    }
} |
+---------------------------------------+

Fanestørrelse

Du har også mulighed for at angive fanestørrelsen. For at gøre dette skal du sende den ønskede fanestørrelse som et andet argument.

Eksempel

SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';

SELECT JSON_DETAILED(@json_document, 1);

Resultat:

{
 "_id": 1,
 "awards": 
 [
  "Top Dog",
  "Best Dog",
  "Biggest Dog"
 ]
}

Og her er den igen, men med en større fanestørrelse:

SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';

SELECT JSON_DETAILED(@json_document, 10);

Resultat:

{
 "_id": 1,
 "awards": 
 [
  "Top Dog",
  "Best Dog",
  "Biggest Dog"
 ]
}

Større JSON-dokument

Her er et eksempel med et lidt større 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);

Resultat:

{
    "_id": 1,
    "name": "Wag",
    "details": 
    {
        "type": "Dog",
        "weight": 20,
        "awards": 
        {
            "Florida Dog Awards": "Top Dog",
            "New York Marathon": "Fastest Dog",
            "Sumo 2020": "Biggest Dog"
        }
    }
}

Nul-argument

Hvis argumentet er NULL , resultatet er NULL :

SELECT JSON_DETAILED(null);

Resultat:

+---------------------+
| JSON_DETAILED(null) |
+---------------------+
| NULL                |
+---------------------+

Forkert parameterantal

Angivelse af ingen argumenter resulterer i en fejl:

SELECT JSON_DETAILED();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'

Det er det samme, når du giver for mange argumenter:

SELECT JSON_DETAILED('{ "a": 1}', 1, 2);

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'

  1. Hvordan gemmer man arrays i MySQL?

  2. hvordan får man vist fuld lagret procedurekode?

  3. Fremmednøgle til et af mange borde?

  4. Maksimal SQLite-databasestørrelse i Android-applikation