MariaDBでは、JSON_DETAILED() は、JSONドキュメントを受け取り、より人間が読める形式で返す組み込み関数です。
これは、ドキュメントの美化と呼ばれることもあります。 MySQLのJSON_PRETTY()に似ています 機能。
逆の効果(つまり、JSONドキュメントを凝縮する)には、JSON_COMPACT()を使用します。 機能。
構文
構文は次のようになります:
JSON_DETAILED(json_doc[, tab_size])
json_docの場所 はJSONドキュメントであり、tab_size タブ/インデントのサイズを指定するオプションの値です。
例
実例を示します。
SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';
SELECT JSON_DETAILED(@json_document); 結果:
+----------------------------------------+
| JSON_DETAILED(@json_document) |
+----------------------------------------+
| {
"name": "Wag",
"type": "Dog",
"weight": 20
} |
+----------------------------------------+ 元のドキュメントはすべて1行で、タブやインデントなどの書式はありません。
結果は複数の行にまたがり、タブ/インデントが含まれているため、人間がドキュメントを読みやすくなっています。
ネストされた構造
ここにさらにいくつかの例がありますが、今回はネストされた構造を使用しています:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document); 結果:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} |
+---------------------------------------+ そしてもう1つ:
SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';
SELECT JSON_DETAILED(@json_document); 結果:
+---------------------------------------+
| JSON_DETAILED(@json_document) |
+---------------------------------------+
| {
"_id": 2,
"specs":
{
"height": 400,
"weight": 15,
"color": "brown"
}
} |
+---------------------------------------+ タブサイズ
タブサイズを指定するオプションもあります。これを行うには、2番目の引数として目的のタブサイズを渡します。
例
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 1); 結果:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} ここでも、タブサイズが大きくなっています:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 10); 結果:
{
"_id": 1,
"awards":
[
"Top Dog",
"Best Dog",
"Biggest Dog"
]
} より大きなJSONドキュメント
これは、少し大きいJSONドキュメントの例です。
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); 結果:
{
"_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の場合 、結果はNULLです :
SELECT JSON_DETAILED(null); 結果:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
パラメータカウントが正しくありません
引数を指定しないとエラーが発生します:
SELECT JSON_DETAILED(); 結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
提供する引数が多すぎる場合も同じです:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2); 結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'