मैं दिशा समय लाने के लिए Google मानचित्र API का उपयोग करने का प्रयास कर रहा हूं। मैं एक यूआरएल बनाने की उम्मीद कर रहा हूं, जेएसओएन प्रतिक्रिया प्राप्त करें, और फिर यात्रा अवधि के लिए उस प्रतिक्रिया की जांच करें। जेएसओएन ऑब्जेक्ट बनाने के बाद, मुझे इसे नेविगेट करने में परेशानी है। मेरे लिए, यह इंगित करता है कि मैंने या तो प्रतिक्रिया प्राप्त करने या JSON ऑब्जेक्ट को नेविगेट करने में गड़बड़ कर दी है। अगर आप बिट्स और कोड के टुकड़ों पर नजर डाल सकते हैं तो मैं इसकी सराहना करता हूं, मैंने वेब के ट्यूटोरियल्स से एक साथ सिलाई है।एंड्रॉइड ऐप में Google मानचित्र एपीआई का JSON पार्सिंग
यह कोड प्रतिक्रिया प्राप्त करने के लिए है। यह एक कोशिश/पकड़ से घिरा हुआ है और इसने किसी भी त्रुटि को ट्रिगर नहीं किया है।
String stringUrl = <URL GOES HERE>;
URL url = new URL(stringUrl);
HttpURLConnection httpconn = (HttpURLConnection)url.openConnection();
if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK)
{
BufferedReader input = new BufferedReader(new InputStreamReader(httpconn.getInputStream()),8192);
String strLine = null;
while ((strLine = input.readLine()) != null)
{
response.append(strLine);
}
input.close();
}
String jsonOutput = response.toString();
इस कोड, के रूप में एक समान प्रश्न के लिए this stackoverflow answer से प्रेरित है कि उत्पादन लेने के लिए और अंतिम स्ट्रिंग में उसे पार्स अवधि का इरादा है।
JSONObject jsonObject = new JSONObject(jsonOutput);
JSONObject routeObject = jsonObject.getJSONObject("routes");
JSONObject legsObject = routeObject.getJSONObject("legs");
JSONObject durationObject = legsObject.getJSONObject("duration");
String duration = durationObject.getString("text");
मैं दूसरे ब्लॉक की दूसरी पंक्ति पर एक JSON अपवाद पकड़ रहा हूं। क्या कोई इसे ठीक करने में मदद कर सकता है? या शायद एक ही डेटा प्राप्त करने का एक आसान तरीका सुझा सकता है?
संपादित करें: यहाँ (aromero से) पहले मददगार जवाब के लिए धन्यवाद, उत्तरार्ध अब लगता है कि:
JSONObject jsonObject = new JSONObject(responseText);
JSONArray routeObject = jsonObject.getJSONArray("routes");
JSONArray legsObject = routeObject.getJSONArray(2); ***error***
JSONObject durationObject = legsObject.getJSONObject(1);
String duration = durationObject.getString("text");
लेकिन यह अभी भी एक JSON अपवाद फेंक है, केवल अब यह तीसरी लाइन के बाद है । मुझे यकीन है कि यह ठीक करने के लिए शर्मनाक रूप से आसान है, लेकिन मैं वास्तव में कुछ मदद की सराहना करता हूं।
एक उदाहरण JSON फ़ाइल के प्रासंगिक हिस्सा नीचे दिखाया गया है:
{
"routes" : [
{
"bounds" : {
"northeast" : {
"lat" : 34.092810,
"lng" : -118.328860
},
"southwest" : {
"lat" : 33.995590,
"lng" : -118.446040
}
},
"copyrights" : "Map data ©2011 Google",
"legs" : [
{
"distance" : {
"text" : "12.9 mi",
"value" : 20807
},
"duration" : {
"text" : "27 mins",
"value" : 1619
},
मुझे लगता है कि आप की पहचान की है मैं गलत क्या कर रही हूं। अभी भी विनिर्देशों को इस्त्री करें। जब मैं इसे ठीक करता हूं तो मैं वापस पोस्ट करूंगा, जब तक कि कोई मुझे इसके लिए धड़कता न हो। – user714403
मार्ग एक सरणी है, मुझे लगता है कि Google आपको संभावित मार्गों की एक सूची लौटा रहा है। तो आपको उनमें से एक को पकड़ने की ज़रूरत है, या उन सभी पर कुछ करना है। तुम क्या करने की कोशिश कर रहे हो? – aromero
बहुत बढ़िया! आपके मूल उत्तर में संपादन के लिए धन्यवाद, मैं वास्तव में हाथ पकड़ने की सराहना करता हूं। मैं वास्तव में JSON के वाक्यविन्यास/अंतर को समझ नहीं पाया और आपने इसे अद्भुत रूप से स्पष्ट कर दिया है। बहुत धन्यवाद! – user714403