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'