2012-09-03 16 views
9

मैं यह नहीं समझ सकता कि एक जेसन सरणी के अंदर रहने वाला तत्व शून्य है। यदि JSONObject ही रिक्त है की जाँच करने के लिए, आप बस का उपयोग करें:जांचें कि JSONArray Element शून्य है

jsonObject.isNullObject(); 

लेकिन जब वस्तु एक सरणी है और मैं अगर है कि सरणी के तत्वों में से एक रिक्त है जाँच करना चाहते हैं, यह काम नहीं करता:

jsonArray.get(i).get("valueThatIsNull") == null; 

कोई सरणी तत्वों पर उपलब्ध नहीं है। मैं कैसे जांचूं कि jsonarray के अंदर मान शून्य हैं या नहीं? यह जानने में मदद कर सकता है कि मैं जावास्क्रिप्ट से एक शून्य वस्तु से गुजर रहा हूं। शायद शून्य में जावा में एक ही चीज़ का मतलब नहीं है जब इसे जेसन प्रारूप में जावास्क्रिप्ट से पारित किया जाता है, लेकिन मैंने नल के चारों ओर कोष्ठक डालने का भी प्रयास किया है और यह अभी भी काम नहीं करता है।

मैं इस स्पष्ट बनाने में सहायता के लिए कुछ वास्तविक स्रोत कोड पोस्ट कर रहा हूं। JsonObject jsonArray का एक हिस्सा है और ऑब्जेक्ट में कई मान हैं क्योंकि यह स्वयं एक वस्तु है।

JSONObject mapItem = jsonArray.getJSONObject(i); 
int id = mapItem.has("id") ? mapItem.getInt("id") : -1; 
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
java.util.Date date = null; 
Date sqlDate = null; 
if(mapItem.has("date")) { 
    String dateStr = mapItem.getString("date"); 
    if(!dateStr.equals("null")) { 
    date = dateFormat.parse(mapItem.getString("date").substring(0, 10)); //Convert javascript date string to java. 
    sqlDate = new Date(date.getTime()); 
} 

उत्तर

13

मैं json स्ट्रिंग के रूप में शून्य मान गुजरता है लगता है, तो आप एक जावा तत्व के रूप में अशक्त जांच नहीं कर सकता।

if(!mapItem.getString("date").equals("null")) { 
    //Value is not null 
} 

मैं एक काम संस्करण के लिए मूल प्रश्न में कोड स्निपेट को अद्यतन किया है: इसके बजाय चेक के रूप में एक स्ट्रिंग के रूप में इस तरह शून्य मान का इलाज।

14

.isNull() का प्रयास करें:

अपने उदाहरण के लिए:

if(!mapItem.isNull("date")) { 
    //Value is not null 
} 

हालांकि, इस सवाल है, "कैसे करता है, तो एक JSONArray तत्व रिक्त है बताने के लिए" के शीर्षक जवाब देने के लिए, का उपयोग .equals()

तो, यह जांचने के लिए कि क्या इंडेक्स 1 शून्य है:

if (!jsonArray.get(1).equals(null)) { 
    //jsonArray[1] is not null 
} 
0

कोशिश JSONArray की विधि

public boolean isNull (int index) 

वास्तव में, यह का उपयोग करता है "अशक्त" स्ट्रिंग सामग्री

JSONObject.NULL.equals(this.opt(index)); 
की तुलना
संबंधित मुद्दे