I MariaDB, JSON_DETAILED() är en inbyggd funktion som tar ett JSON-dokument och returnerar det i ett mer läsbart format.
Detta kallas ibland för att försköna dokumentet. Det liknar MySQL:s JSON_PRETTY() funktion.
Använd JSON_COMPACT() för motsatt effekt (dvs. för att kondensera ner ett JSON-dokument). funktion.
Syntax
Syntaxen ser ut så här:
JSON_DETAILED(json_doc[, tab_size])
Där json_doc är JSON-dokumentet och tab_size är ett valfritt värde som anger storleken på tabben/indragen.
Exempel
Här är ett exempel att visa.
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
} |
+----------------------------------------+ Originaldokumentet finns på en rad, utan tabb/indrag eller annan formatering.
Resultatet är spritt över flera rader och innehåller tabbar/indrag, vilket gör dokumentet lättare att läsa för oss människor.
Inkapslade strukturer
Här är ytterligare ett par exempel, den här gången med kapslade 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"
]
} |
+---------------------------------------+ Och en annan:
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"
}
} |
+---------------------------------------+ Flikstorlek
Du har också möjlighet att ange flikstorleken. För att göra detta, skicka önskad flikstorlek som ett andra argument.
Exempel
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"
]
} Och här är den igen, men med en större flikstorlek:
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
Här är ett exempel med ett lite 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"
}
}
} Nollargument
Om argumentet är NULL , resultatet är NULL :
SELECT JSON_DETAILED(null); Resultat:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
Felaktig parameterräkning
Att inte tillhandahålla några argument resulterar i ett fel:
SELECT JSON_DETAILED(); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
Det är samma sak när du ger för många argument:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'