Di MariaDB, JSON_DETAILED() adalah fungsi bawaan yang mengambil dokumen JSON, dan mengembalikannya dalam format yang lebih mudah dibaca manusia.
Ini kadang-kadang disebut sebagai mempercantik dokumen. Ini mirip dengan JSON_PRETTY() MySQL fungsi.
Untuk efek sebaliknya (yaitu untuk menyingkat dokumen JSON), gunakan JSON_COMPACT() fungsi.
Sintaks
Sintaksnya seperti ini:
JSON_DETAILED(json_doc[, tab_size])
Dimana json_doc adalah dokumen JSON, dan tab_size adalah nilai opsional yang menentukan ukuran tab/indentasi.
Contoh
Berikut ini contoh untuk didemonstrasikan.
SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';
SELECT JSON_DETAILED(@json_document); Hasil:
+----------------------------------------+
| JSON_DETAILED(@json_document) |
+----------------------------------------+
| {
"name": "Wag",
"type": "Dog",
"weight": 20
} |
+----------------------------------------+ Dokumen asli semuanya dalam satu baris, tanpa tab/indentasi atau pemformatan lainnya.
Hasilnya tersebar di beberapa baris dan berisi tab/indentasi, yang membuat dokumen lebih mudah dibaca oleh kita sebagai manusia.
Struktur Bersarang
Berikut adalah beberapa contoh lagi, kali ini dengan struktur bersarang:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document); Hasil:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} |
+---------------------------------------+ Dan satu lagi:
SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';
SELECT JSON_DETAILED(@json_document); Hasil:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 2,
"specs":
{
"height": 400,
"weight": 15,
"color": "brown"
}
} |
+---------------------------------------+ Ukuran Tab
Anda juga memiliki opsi untuk menentukan ukuran tab. Untuk melakukannya, berikan ukuran tab yang diinginkan sebagai argumen kedua.
Contoh
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 1); Hasil:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Dan ini dia lagi, tetapi dengan ukuran tab yang lebih besar:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 10); Hasil:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} Dokumen JSON Lebih Besar
Berikut ini contoh dengan dokumen JSON yang sedikit lebih besar.
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); Hasil:
{
"_id": 1,
"name": "Wag",
"details":
{
"type": "Dog",
"weight": 20,
"awards":
{
"Florida Dog Awards": "Top Dog",
"New York Marathon": "Fastest Dog",
"Sumo 2020": "Biggest Dog"
}
}
} Argumen Null
Jika argumennya adalah NULL , hasilnya adalah NULL :
SELECT JSON_DETAILED(null); Hasil:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
Jumlah Parameter Salah
Tidak memberikan argumen akan menyebabkan kesalahan:
SELECT JSON_DETAILED(); Hasil:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
Sama halnya jika Anda memberikan terlalu banyak argumen:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2); Hasil:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'