2012-07-03 18 views
13

मैं JSONObject के लिए documentation पर देख रहा था जब मैंने दो विधियों को देखा: getJSONObject(String key) और optJSONObject(String key)। प्रलेखन से, मैंने सोचा कि उन्होंने लगभग एक ही चीज़ के साथ एक ही चीज़ की है: यदि कुंजी या मान नहीं मिला है, तो getJSONObject()JSONException फेंकता है जबकि optJSONObject() बस null देता है।getJSON बनाम optJSON

  1. क्या getJSONObject() और optJSONObject() के बीच कोई अन्य अंतर है?
  2. getopt से अधिक के फायदे क्या हैं और इसके विपरीत?
  3. क्या ऐसी विशिष्ट स्थितियां हैं जहां मैं एक दूसरे पर उपयोग करना चाहूंगा या जहां किसी का उपयोग दृढ़ता से निराश/प्रतिबंधित है?
+0

प्रश्न 2 और 3 के अनुसार, सबसे अच्छा जवाब शायद यह होगा कि आप अपने कोड के संदर्भ के आधार पर त्रुटियों को कैसे संभालना चाहते हैं। – honyovk

उत्तर

7

JSON में एक मान वैकल्पिक हो सकता है, इसलिए optJSONObject का उपयोग करना बेहतर है क्योंकि आपको केवल यह जांचना है कि यह शून्य है या नहीं और अपना कार्य जारी रखें।

+0

मुझे लगता है कि यदि आप 'getJSONObject' का उपयोग कर रहे हैं, क्योंकि यह अपवाद फेंक देगा, तो आप' पकड़ने 'का उपयोग करते हुए गलत पकड़ने वाले JSON प्रारूप को' पकड़ 'में आसानी से संभाल सकते हैं। –

0

मैं अपने जेसन फ़ाइल में कुंजी "वाक्यों" के साथ optJSONObject का उपयोग कर रहा हूं और यह शून्य वापस आ गया है लेकिन सही परिणाम JSONArray या स्ट्रिंग हो सकता है।

{ 
"sentences":[ 
    { 
    "trans":"làm", 
    "orig":"do", 
    "translit":"", 
    "src_translit":"" 
    } 
] 
} 
2

ऑप्टस्ट्रिंग खाली स्ट्रिंग ("") देता है यदि आपके द्वारा निर्दिष्ट कुंजी मौजूद नहीं है। GetString एक JSONException फेंकता है।

संबंधित मुद्दे