SQLite json_object()
फ़ंक्शन अपने तर्कों के आधार पर एक अच्छी तरह से गठित JSON ऑब्जेक्ट देता है।
फ़ंक्शन शून्य या अधिक जोड़े तर्क स्वीकार करता है और उन तर्कों के आधार पर एक अच्छी तरह से गठित JSON ऑब्जेक्ट देता है।
सिंटैक्स
json_object(label1,value1,...)
जहां label1, value2, ...
लेबल/मान जोड़े का प्रतिनिधित्व करता है।
उदाहरण
प्रदर्शित करने के लिए यहां एक सरल उदाहरण दिया गया है:
SELECT json_object( "name", "Igor", "age", 35 );
परिणाम:
{"name":"Igor","age":35}
JSON ऑब्जेक्ट पास करना
एक उद्धृत JSON स्ट्रिंग में SQL प्रकार TEXT परिणामों के साथ एक तर्क पास करना, किसी भी उद्धृत लेबल से बच जाना:
SELECT json_object( "user", '{ "name" : "igor", "age" : 35 }' );
परिणाम:
{"user":"{ \"name\" : \"igor\", \"age\" : 35 }"}
यदि हम ऐसा नहीं चाहते हैं, तो हम json()
. का उपयोग कर सकते हैं मान्य JSON दस्तावेज़ के रूप में मान प्रदान करने के लिए कार्य करता है:
SELECT json_object( "user", json('{ "name" : "igor", "age" : 35 }') );
परिणाम:
{"user":{"name":"igor","age":35}}
इसे करने का दूसरा तरीका है SQLite के ->
. का उपयोग करना ऑपरेटर:
SELECT json_object( "user", '{ "name" : "igor", "age" : 35 }' -> '$' );
परिणाम:
{"user":{"name":"igor","age":35}}
वैकल्पिक रूप से, हम एक और json_object()
का उपयोग कर सकते हैं समारोह:
SELECT json_object( "user", json_object( "name", "Igor", "age", 35 ) );
परिणाम:
{"user":{"name":"Igor","age":35}}
यहाँ यह कुछ अन्य मूल्यों के साथ है:
SELECT json_object(
"a", 1,
"user", json_object( "name", "Igor", "age", 35 ),
"b", 2
);
परिणाम:
{"a":1,"user":{"name":"Igor","age":35},"b":2}
JSON Arrays पास करना
JSON सरणियों को पास करते समय यह एक समान बात है:
SELECT json_object( "scores", '[ 9, 4, 7 ]' );
परिणाम:
{"scores":"[ 9, 4, 7 ]"}
इस मामले में, मान एक स्ट्रिंग है जो एक सरणी जैसा दिखता है।
एक वास्तविक JSON सरणी वापस करने के लिए, हम अपने तर्क को json()
. पर पास कर सकते हैं समारोह:
SELECT json_object( "scores", json('[ 9, 4, 7 ]') );
परिणाम:
{"scores":[9,4,7]}
हम ->
. का भी उपयोग कर सकते हैं ऑपरेटर:
SELECT json_object( "scores", '[ 9, 4, 7 ]' -> '$' );
परिणाम:
{"scores":[9,4,7]}
वैकल्पिक रूप से, हम मानों को json_array()
. पर पास कर सकते हैं समारोह:
SELECT json_object( "scores", json_array( 9, 4, 7 ) );
परिणाम:
{"scores":[9,4,7]}
यहाँ यह कुछ अन्य नाम/मूल्य युग्मों के साथ है:
SELECT json_object(
"name", "Bruno",
"scores", json_array( 9, 4, 7 ),
"age", 25
);
परिणाम:
{"name":"Bruno","scores":[9,4,7],"age":25}
खाली वस्तु बनाएं
कॉलिंग json_object()
बिना किसी तर्क के एक खाली वस्तु में परिणाम:
SELECT json_object();
परिणाम:
{}
डुप्लिकेट लेबल
लिखते समय, json_object()
बिना किसी समस्या के डुप्लिकेट लेबल स्वीकार करता है। इसलिए, हम इस तरह की चीजें कर सकते हैं:
SELECT json_object( "b", 1, "b", 2 );
परिणाम:
{"b":1,"b":2}
लेकिन SQLite का दस्तावेज़ीकरण सलाह देता है कि यह हमेशा मामला नहीं हो सकता है - SQLite के भविष्य के संस्करण ऐसे परिदृश्यों का समर्थन नहीं कर सकते हैं।
डेटाबेस उदाहरण
हम json_object()
. का उपयोग कर सकते हैं डेटाबेस से डेटा पुनर्प्राप्त करते समय।
मान लीजिए कि हम निम्नलिखित क्वेरी चलाते हैं:
SELECT * FROM Pets;
परिणाम:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
हम देख सकते हैं कि तीन कॉलम हैं, और हम उनके नाम देख सकते हैं।
हम json_object()
. का उपयोग कर सकते हैं उस टेबल पर इस तरह काम करें:
SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
परिणाम:
{"PetId":1,"PetName":"Homer","TypeId":3} {"PetId":2,"PetName":"Yelp","TypeId":1} {"PetId":3,"PetName":"Fluff","TypeId":2} {"PetId":4,"PetName":"Brush","TypeId":4}
यहां, मैंने स्पष्ट रूप से लेबल नाम निर्दिष्ट किए हैं, फिर मूल्यों के लिए डेटाबेस से वास्तविक कॉलम का उपयोग किया है। प्रत्येक पंक्ति एक JSON दस्तावेज़ बन जाती है, और प्रत्येक स्तंभ उस JSON दस्तावेज़ में एक कुंजी/मान युग्म बन जाता है।
हम json_group_array()
. का भी उपयोग कर सकते हैं दस्तावेज़ों को एक सरणी में संलग्न करने के लिए कार्य करता है:
SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
परिणाम:
[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]