Trong MariaDB, JSON_DETAILED()
là một hàm tích hợp có chức năng nhận tài liệu JSON và trả về ở định dạng dễ đọc hơn cho con người.
Điều này đôi khi được gọi là kiểm tra tài liệu. Nó tương tự như JSON_PRETTY()
của MySQL chức năng.
Đối với tác dụng ngược lại (tức là cô đọng tài liệu JSON), hãy sử dụng JSON_COMPACT()
chức năng.
Cú pháp
Cú pháp như sau:
JSON_DETAILED(json_doc[, tab_size])
Ở đâu json_doc
là tài liệu JSON và tab_size
là một giá trị tùy chọn chỉ định kích thước của tab / thụt lề.
Ví dụ
Đây là một ví dụ để chứng minh.
SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';
SELECT JSON_DETAILED(@json_document);
Kết quả:
+----------------------------------------+ | JSON_DETAILED(@json_document) | +----------------------------------------+ | { "name": "Wag", "type": "Dog", "weight": 20 } | +----------------------------------------+
Toàn bộ tài liệu gốc nằm trên một dòng, không có tab / thụt lề hoặc định dạng khác.
Kết quả được trải rộng trên nhiều dòng và chứa các tab / thụt lề, giúp con người chúng ta đọc tài liệu dễ dàng hơn.
Cấu trúc lồng nhau
Dưới đây là một vài ví dụ khác, lần này là với các cấu trúc lồng nhau:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document);
Kết quả:
+---------------------------------------+ | JSON_DETAILED(@json_document) | +---------------------------------------+ | { "_id": 1, "awards": [ "Top Dog", "Best Dog", "Biggest Dog" ] } | +---------------------------------------+
Và một cái khác:
SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';
SELECT JSON_DETAILED(@json_document);
Kết quả:
+---------------------------------------+ | JSON_DETAILED(@json_document) | +---------------------------------------+ | { "_id": 2, "specs": { "height": 400, "weight": 15, "color": "brown" } } | +---------------------------------------+
Kích thước tab
Bạn cũng có tùy chọn chỉ định kích thước tab. Để thực hiện việc này, hãy chuyển kích thước tab mong muốn làm đối số thứ hai.
Ví dụ
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 1);
Kết quả:
{ "_id": 1, "awards": [ "Top Dog", "Best Dog", "Biggest Dog" ] }
Và đây là một lần nữa, nhưng với kích thước tab lớn hơn:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 10);
Kết quả:
{ "_id": 1, "awards": [ "Top Dog", "Best Dog", "Biggest Dog" ] }
Tài liệu JSON lớn hơn
Đây là một ví dụ với tài liệu JSON lớn hơn một chút.
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);
Kết quả:
{ "_id": 1, "name": "Wag", "details": { "type": "Dog", "weight": 20, "awards": { "Florida Dog Awards": "Top Dog", "New York Marathon": "Fastest Dog", "Sumo 2020": "Biggest Dog" } } }
Đối số rỗng
Nếu đối số là NULL
, kết quả là NULL
:
SELECT JSON_DETAILED(null);
Kết quả:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
Đếm tham số không chính xác
Không cung cấp đối số dẫn đến lỗi:
SELECT JSON_DETAILED();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
Điều này cũng tương tự khi bạn cung cấp quá nhiều đối số:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2);
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'