(Readibility के लिए सरलीकृत): मैं JSON डेटा का एक ब्लॉक के रूप में निम्नानुसार है:
{placeName:Paris,
sectionCode:,
elapsed:FT,
Time:02/24/2015 17:30:00,
Date:02/24/2015 00:00:00,
Score:1 : 1,
statusCode:6};
मैं GSON पुस्तकालय (देखें उपयोग कर रहा हूँ https://code.google.com/p/google-gson/ आदेश में एक जावा कार्यक्रम में इस JSON संसाधित करने के लिए)।
समस्या मैं का सामना कर रहा हूँ sectionCode विशेषता (उपरोक्त सूची में दूसरा तत्व) के साथ है। डेटा है कि मैं कर रहा हूँ के प्रसंस्करण के अन्य JSON ब्लॉक में, यह तत्व या तो मौजूद नहीं है, या मौजूद है, और अपने मूल्य जैसे 14. यह कोई समस्याओं का कारण बनता रूप में एक पूर्णांक में शामिल है। यहाँ, तथापि, sectionCode के लिए मूल्य बस है ।
नीचे दिए गए कोड मैं वर्तमान में JSON ब्लॉक (जहां के इस खंड पर कार्रवाई करने के लिए उपयोग है jsonroot
JSON डेटा के ब्लॉक शामिल हैं):
//deal with situation where no section code is provided
Integer sectioncode = null;
if ((jsonroot.get(sectionCode) != null) && (jsonroot.get(sectionCode).getAsString() != null) && (!jsonroot.get(sectionCode).isJsonNull()) && (jsonroot.get(sectionCode).getAsString() != ) && (!jsonroot.get(sectionCode).equals(null))) {
sectioncode = jsonroot.get(sectionCode).getAsInt();
}
'अगर' बयान में कई की स्थिति sectionCode विशेषता के लिए मूल्य में रिक्त स्ट्रिंग का पता लगाने, और इस तरह ऐसा तो नहीं है को क्रियान्वित करने से निम्नलिखित 'getAsInt' कोड को रोकने के प्रयास कर रहे हैं। मैं उम्मीद है कि यह उनमें से कम से कम एक से पकड़ा जा सकता है, लेकिन इस मामले होने के लिए प्रतीत नहीं होता। इसके बजाय, जब यह कोड के इस हिस्से का सामना करना पड़ता है, मैं निम्नलिखित त्रुटि मिलती है:
Exception in thread main java.lang.NumberFormatException: For input string:
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at com.google.gson.JsonPrimitive.getAsInt(JsonPrimitive.java:260)
at MyProgram.extract_general_page_data(MyProgram.java:235)
at MyProgram.load_one_page(MyProgram.java:187)
at MyProgram.do_all(MyProgram.java:100)
at MyProgram.main(MyProgram.java:47)
मुझे पता है कि मैं बस को स्वीकार कर सकता है कि एक NumberFormatException जगह लेने के लिए जा रहा है, और कहा कि के साथ सौदा करने में एक आज़माएं / कैच ब्लॉक कर दिया है, लेकिन इस स्थिति से निपटने के लिए एक गंदा रास्ता की तरह लगता है।
तो मेरे सवाल का सच है: क्यों मेरे से कोई भी शर्त 'अगर' बयान रिक्त मान का पता लगाने में नहीं हैं? और क्या मैं के बजाय इस्तेमाल कर सकते हैं?