यह एक और अच्छा उदाहरण है कि क्यों शुरू से ही सही डेटा प्रकार चुनने से बाद में मदद मिलती है;)
यह जांचने के लिए कोई अंतर्निहित फ़ंक्शन नहीं है कि दिया गया टेक्स्ट वैध JSON है या नहीं। हालांकि आप अपना खुद का लिख सकते हैं:
create or replace function is_valid_json(p_json text)
returns boolean
as
$$
begin
return (p_json::json is not null);
exception
when others then
return false;
end;
$$
language plpgsql
immutable;
सावधानी:अपवाद को संभालने के कारण यह तेज़ नहीं होने वाला है। यदि आप इसे कई अमान्य मानों पर कॉल करते हैं तो यह आपके चयन को व्यापक रूप से धीमा कर देगा।
हालांकि दोनों '{"products": 1}'
और '{"products": [1,2,3]}'
वैध JSON दस्तावेज़ हैं। तथ्य यह है कि पूर्व अमान्य है, आपके आवेदन तर्क पर आधारित है, JSON सिंटैक्स पर नहीं।
यह सत्यापित करने के लिए कि आपको एक समान फ़ंक्शन की आवश्यकता होगी, जो json_array_length()
को कॉल करते समय त्रुटियों को ट्रैप करता है
create or replace function is_valid_json_array(p_json text, p_element text)
returns boolean
as
$$
begin
return json_array_length( p_json::json -> p_element) >= 0;
exception
when others then
return false;
end;
$$
language plpgsql
immutable;