JSON और MySQL के साथ काम करते समय, कभी-कभी आपको स्ट्रिंग से बचने की आवश्यकता हो सकती है ताकि उनके उद्धरण वर्ण JSON दस्तावेज़ की व्याख्या में हस्तक्षेप न करें। ऐसे मामलों में, आप JSON_QUOTE()
. का उपयोग कर सकते हैं संभावित रूप से समस्याग्रस्त स्ट्रिंग से बचने के लिए कार्य करें।
JSON_QUOTE()
एक वैध JSON स्ट्रिंग शाब्दिक उत्पन्न करने के लिए उपयोग किया जाता है जिसे JSON दस्तावेज़ में शामिल किया जा सकता है। उदाहरण के लिए, हो सकता है कि आप चाहते हों कि किसी ऐरे के तत्व में टेक्स्ट हो null
वास्तविक शून्य मान होने के बजाय, एक स्ट्रिंग अक्षर के रूप में। इस फ़ंक्शन का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि टेक्स्ट को शून्य मान के बजाय स्ट्रिंग अक्षर के रूप में जोड़ा गया है।
इसका उपयोग करने के लिए, स्ट्रिंग में गुजरते समय बस फ़ंक्शन को कॉल करें।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_QUOTE(string)
जहां string
बचने के लिए स्ट्रिंग है।
उदाहरण 1 - मूल उपयोग
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
सबसे पहले, आइए देखें कि जब हम JSON_ARRAY()
. का उपयोग करते हैं तो क्या होता है एक सरणी बनाने के लिए कार्य करें।
SELECT JSON_ARRAY("Hot", "Warm", "Cold") AS 'Result';
परिणाम:
+-------------------------+ | Result | +-------------------------+ | ["Hot", "Warm", "Cold"] | +-------------------------+
परिणाम एक सरणी है जिसमें 3 तत्व होते हैं। हम जानते हैं कि यह एक ऐरे है क्योंकि यह एक ओपनिंग स्क्वायर ब्रैकेट से शुरू होता है ([
) और एक क्लोजिंग स्क्वायर ब्रैकेट के साथ समाप्त होता है (]
) हम यह भी जानते हैं कि प्रत्येक तत्व एक स्ट्रिंग है, क्योंकि वे दोहरे उद्धरण चिह्नों से घिरे हैं। अल्पविराम प्रत्येक तत्व को अलग करता है।
अब देखते हैं कि जब हम JSON_QUOTE()
. का उपयोग करते हैं तो क्या होता है इसके बजाय।
SELECT JSON_QUOTE('"Hot", "Warm", "Cold"') AS 'Result';
परिणाम:
+-------------------------------+ | Result | +-------------------------------+ | "\"Hot\", \"Warm\", \"Cold\"" | +-------------------------------+
हमें एक सरणी नहीं मिलती है। हमें एक स्ट्रिंग मिलती है। हम जानते हैं कि यह एक स्ट्रिंग है क्योंकि यह एक दोहरे उद्धरण वर्ण के साथ शुरू और समाप्त होती है। स्ट्रिंग के भीतर कोई भी डबल कोट्स बैकस्लैश कैरेक्टर (\
. के साथ बच जाते हैं )।
यदि ये वर्ण बच नहीं गए थे, तो पहला दोहरा उद्धरण (Hot
. के बाद) ) अनजाने में स्ट्रिंग को समाप्त कर देगा। इसलिए, हम बाकी स्ट्रिंग को शामिल नहीं कर पाएंगे। कुछ वर्णों से बचकर, हम MySQL से कह रहे हैं कि उन वर्णों की व्याख्या न करें जैसा कि वह सामान्य रूप से करता है।
उदाहरण 2 - संख्याएं
यही अवधारणा संख्याओं पर लागू होती है, सिवाय इसके कि संख्याएँ दोहरे उद्धरण चिह्नों में संलग्न नहीं हैं।
इसलिए हम एक ऐसा सरणी बना सकते हैं जिसमें 3 तत्व हों, जो सभी संख्याएँ हों।
SELECT JSON_ARRAY(1, 2, 3) AS 'Result';
परिणाम:
+-----------+ | Result | +-----------+ | [1, 2, 3] | +-----------+
और अगर हम JSON_QUOTE()
. पर स्विच करते हैं तो क्या होता है समारोह।
SELECT JSON_QUOTE('[1, 2, 3]') AS 'Result';
परिणाम:
+-------------+ | Result | +-------------+ | "[1, 2, 3]" | +-------------+
तो हमें एक ही परिणाम मिलता है, सिवाय इसके कि पूरी सरणी दोहरे उद्धरण चिह्नों में संलग्न है। यह इसे एक सरणी के बजाय एक स्ट्रिंग बनाता है।
उदाहरण 3 - सरणियों/वस्तुओं में जोड़ना
हम इस स्ट्रिंग को शाब्दिक रूप से ले सकते हैं और इसे एक सरणी में एक तत्व के रूप में जोड़ सकते हैं।
SELECT JSON_ARRAY(JSON_QUOTE('[1, 2, 3]'), 8, 9) AS 'Result';
परिणाम:
+-------------------------+ | Result | +-------------------------+ | ["\"[1, 2, 3]\"", 8, 9] | +-------------------------+
इस मामले में, स्ट्रिंग अक्षर पहला तत्व है, जिसमें 8
. है और 9
क्रमशः दूसरे और तीसरे तत्व होने के नाते।
हम इस स्ट्रिंग का उपयोग किसी ऑब्जेक्ट में शाब्दिक रूप से भी कर सकते हैं।
SELECT JSON_OBJECT('Key', JSON_QUOTE('[1, 2, 3]')) AS 'Result';
परिणाम:
+--------------------------+ | Result | +--------------------------+ | {"Key": "\"[1, 2, 3]\""} | +--------------------------+
उदाहरण 4 - मान निकालना
इसलिए यदि हमें अपने JSON दस्तावेज़ से मान निकालने की आवश्यकता है, तो इसे एक सरणी के बजाय एक स्ट्रिंग अक्षर के रूप में व्याख्यायित किया जाएगा।
सबसे पहले, यहां बताया गया है कि यदि हम तीन संख्याओं के साथ एक सरणी को अलग-अलग तत्वों के रूप में सेट करते हैं, तो पहले तत्व को सरणी से निकालें।
SET @data1 = JSON_ARRAY(1, 2, 3); SELECT @data1 AS '@data1', JSON_EXTRACT(@data1, '$[0]');
परिणाम:
+-----------+------------------------------+ | @data1 | JSON_EXTRACT(@data1, '$[0]') | +-----------+------------------------------+ | [1, 2, 3] | 1 | +-----------+------------------------------+
तो इस सरणी में तीन तत्व होते हैं - प्रत्येक तत्व सरणी में एक अलग तत्व है।
अब, अगर हम JSON_QUOTE()
. का उपयोग करते हैं तो क्या होगा सभी तीन संख्याओं और उनके वर्ग कोष्ठक को एक स्ट्रिंग अक्षर में परिवर्तित करने के लिए, उसे सरणी में जोड़ें, फिर सरणी के पहले तत्व को निकालें।
SET @data2 = JSON_ARRAY(JSON_QUOTE('[1, 2, 3]')); SELECT @data2 AS '@data2', JSON_EXTRACT(@data2, '$[0]');
परिणाम:
+-------------------+------------------------------+ | @data2 | JSON_EXTRACT(@data2, '$[0]') | +-------------------+------------------------------+ | ["\"[1, 2, 3]\""] | "\"[1, 2, 3]\"" | +-------------------+------------------------------+
तो इस मामले में, सरणी में केवल एक तत्व होता है - संपूर्ण स्ट्रिंग अक्षर।