मारियाडीबी में, JSON_KEYS() एक अंतर्निहित फ़ंक्शन है जो JSON दस्तावेज़ से शीर्ष-स्तरीय कुंजियों की एक सरणी देता है। यदि कोई पथ प्रदान किया जाता है, तो वह उस पथ से शीर्ष-स्तरीय कुंजियाँ लौटाता है।
यह निर्दिष्ट स्तर में नेस्टेड उप-ऑब्जेक्ट्स की कुंजियों को बाहर करता है।
साथ ही, यदि चयनित ऑब्जेक्ट खाली है, तो एक खाली सरणी वापस कर दी जाती है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_KEYS(json_doc[, path])
जहां json_doc JSON दस्तावेज़ है, और path दस्तावेज़ के भीतर एक पथ है।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_KEYS(@json_document); परिणाम:
+----------------------------+ | JSON_KEYS(@json_document) | +----------------------------+ | ["name", "type", "weight"] | +----------------------------+
पथ निर्दिष्ट करना
दस्तावेज़ में पथ निर्दिष्ट करने का एक उदाहरण यहां दिया गया है:
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_KEYS(
@json_document,
'$.details'
) AS Result; परिणाम:
+------------------------------+ | Result | +------------------------------+ | ["type", "weight", "awards"] | +------------------------------+
जैसा कि उल्लेख किया गया है, उप-वस्तुओं को परिणाम से बाहर रखा गया है।
गैर-मौजूद पथ
एक पथ पास करना जो JSON दस्तावेज़ में मौजूद नहीं है NULL . में परिणाम देता है ।
उदाहरण:
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_KEYS(
@json_document,
'$.wrong'
) AS Result; परिणाम:
+--------+ | Result | +--------+ | NULL | +--------+
खाली वस्तुएं
यदि चयनित ऑब्जेक्ट खाली है, तो एक खाली सरणी लौटा दी जाती है:
SELECT JSON_KEYS('{}'); परिणाम:
+-----------------+
| JSON_KEYS('{}') |
+-----------------+
| [] |
+-----------------+ अशक्त तर्क
अगर कोई तर्क NULL है , परिणाम NULL . है :
SELECT
JSON_KEYS(null),
JSON_KEYS(null, '$.type'),
JSON_KEYS('{"a":1}', null); परिणाम:
+-----------------+---------------------------+----------------------------+
| JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) |
+-----------------+---------------------------+----------------------------+
| NULL | NULL | NULL |
+-----------------+---------------------------+----------------------------+ गलत पैरामीटर गणना
तर्क न देने से त्रुटि होती है:
SELECT JSON_KEYS(); परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'
जब आप बहुत कम या बहुत अधिक तर्क देते हैं तो ऐसा ही होता है:
SELECT JSON_KEYS('{ "a": 1}', 1, 2); परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'