SQLite में, json_patch()
फ़ंक्शन का उपयोग JSON ऑब्जेक्ट के तत्वों को जोड़ने, संशोधित करने या हटाने के लिए किया जा सकता है।
ऐसा करने के लिए, यह दिए गए JSON इनपुट के विरुद्ध दिए गए पैच को लागू करने के लिए RFC-7396 मर्जपैच एल्गोरिथम चलाता है।
जब हम फ़ंक्शन को कॉल करते हैं, तो पैच के बाद हम मूल JSON को पहले तर्क के रूप में पास करते हैं। फ़ंक्शन तब पहले तर्क में JSON के विरुद्ध उस पैच को लागू करता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
json_patch(T,P)
जहां T
मूल JSON का प्रतिनिधित्व करता है, और P
पैच है। फ़ंक्शन पैच लागू करता है P
T
. के विरुद्ध ।
प्रदान किए गए पैच की सामग्री P
लक्ष्य JSON दस्तावेज़ की वर्तमान सामग्री के साथ तुलना की जाती है T
. अगर P
ऐसे सदस्य शामिल हैं जो T
. में प्रकट नहीं होते हैं , उन सदस्यों को जोड़ा जाता है। अगर T
में सदस्य होता है, मान बदल दिया जाता है।
P
. में शून्य मान T
. में मौजूदा मानों को हटाने का संकेत देने के लिए विशेष अर्थ दिए गए हैं ।
उदाहरण
प्रदर्शित करने के लिए यहां कुछ उदाहरण दिए गए हैं।
सम्मिलित करें
SELECT json_patch('{ "name" : "Fluffy" }', '{ "age" : 10 }');
परिणाम:
{"name":"Fluffy","age":10}
शून्य मान वाले नए सदस्य को सम्मिलित करने का प्रयास काम नहीं करता:
SELECT json_patch('{ "name" : "Fluffy" }', '{ "age" : null }');
परिणाम:
{"name":"Fluffy"}
शून्य मान वास्तव में JSON से सदस्यों को हटाने के लिए उपयोग किए जाते हैं (जैसा कि बाद के उदाहरण में देखा गया है)।
अपडेट करें
SELECT json_patch('{ "name" : "Fluffy" }', '{ "name" : "Baldy" }');
परिणाम:
{"name":"Baldy"}
यदि कई कुंजी/मान जोड़े हैं, लेकिन हम केवल एक को अपडेट करना चाहते हैं, तो हमें केवल उस एक को हमारे दूसरे तर्क में निर्दिष्ट करने की आवश्यकता है:
SELECT json_patch('{ "name" : "Fluffy", "age" : 10 }', '{ "name" : "Baldy" }');
परिणाम:
{"name":"Baldy","age":10}
एकाधिक कुंजी/मान जोड़े अपडेट करते समय एक ही अवधारणा लागू होती है - हमें केवल उनको निर्दिष्ट करने की आवश्यकता होती है:
SELECT json_patch('{
"name" : "Fluffy",
"type" : "Cat",
"age" : 10
}',
'{
"name" : "Baldy",
"age" : 11
}'
);
परिणाम:
{"name":"Baldy","type":"Cat","age":11}
अपडेट करें और डालें
SELECT json_patch('{ "name" : "Fluffy" }', '{ "name" : "Baldy", "age" : 10 }');
परिणाम:
{"name":"Baldy","age":10}
हटाएं/निकालें
मर्ज पैच में शून्य मानों को लक्ष्य में मौजूदा मानों को हटाने का संकेत देने के लिए विशेष अर्थ दिया जाता है:
SELECT json_patch('{ "name" : "Fluffy", "age" : 10 }', '{ "age" : null }');
परिणाम:
{"name":"Fluffy"}
सरणी
json_patch()
फ़ंक्शन तत्वों को किसी सरणी में नहीं जोड़ सकता है, न ही किसी सरणी के अलग-अलग तत्वों को संशोधित कर सकता है। यह केवल एक इकाई के रूप में संपूर्ण सरणी को सम्मिलित, प्रतिस्थापित या हटा सकता है।
तो, यहां एक ऐरे में एलीमेंट जोड़ने का एक उदाहरण दिया गया है:
SELECT json_patch('[ 1, 2, 3 ]', '[ 1, 2, 3, 4 ]');
परिणाम:
[1,2,3,4]
मुझे मूल सरणी को एक नए के साथ बदलना पड़ा। इसलिए तकनीकी रूप से, मैंने वास्तव में कुछ भी नहीं जोड़ा - मैंने बस पूरी सरणी को दूसरे के साथ बदल दिया।
यदि सरणी किसी वस्तु के भीतर है तो वही अवधारणा लागू होती है:
SELECT json_patch('{ "scores" : [ 1, 2, 3 ] }', '{ "scores" : [ 1, 2, 3, 4 ] }');
परिणाम:
{"scores":[1,2,3,4]}
यदि आपको सरणियों के साथ काम करने की आवश्यकता है, तो json_set()
. जैसे कार्यों का प्रयास करें , json_insert()
, json_remove()
और json_replace()
इसके बजाय।
ऑब्जेक्ट को ऐरे से बदलें
हम केवल पैच के रूप में एक सरणी की आपूर्ति करके वस्तुओं को एक सरणी से बदल सकते हैं:
SELECT json_patch('{ "name" : "Fluffy", "age" : 10 }', '[ "Fluffy", 10 ]');
परिणाम:
["Fluffy",10]
ऐरे को किसी ऑब्जेक्ट से बदलें
और यह दूसरे तरीके से भी काम करता है:
SELECT json_patch('[ "Fluffy", 10 ]', '{ "name" : "Fluffy", "age" : 10 }');
परिणाम:
{"name":"Fluffy","age":10}