2016-09-16 251 views
-1

好的,所以我试图从这个URL获取一些JSON数据;无法获取JSON数据

https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJcUQQbsYJGToRnGdYmvWmmRs&key=API_KEY

但对于许多标签,在logcat的是说 '没有价值'。 如果您在浏览器中看到JSON响应,那些数据清晰可见。

代码片段:

public void asd(String id){ 
    StringRequest sr = new StringRequest(Request.Method.GET, id, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject obj =new JSONObject(response); 
       Log.i("response",response); 
       obj.get("international_phone_number"); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.i("sdsd",error.toString()); 
     } 
    }); 
    requestQueue.add(sr); 
} 

的logcat:

org.json.JSONException: No value for international_phone_number 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at org.json.JSONObject.get(JSONObject.java:389) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at com.example.tanmay.zomato.MainActivity$1.onResponse(MainActivity.java:140) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at com.example.tanmay.zomato.MainActivity$1.onResponse(MainActivity.java:134) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at android.os.Handler.handleCallback(Handler.java:739) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at android.os.Looper.loop(Looper.java:148) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5417) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
09-16 23:13:59.326 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
09-16 23:13:59.455 7678-7678/com.example.tanmay.zomato I/response: { 
                     "html_attributions" : [], 
                     "result" : { 
                     "address_components" : [ 
                      { 
                       "long_name" : "Nandankanan Road", 
                       "short_name" : "Nandankanan Rd", 
                       "types" : [ "route" ] 
                      }, 
                      { 
                       "long_name" : "Gajapati Nagar", 
                       "short_name" : "Gajapati Nagar", 
                       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
                      }, 
                      { 
                       "long_name" : "Bhubaneswar", 
                       "short_name" : "Bhubaneswar", 
                       "types" : [ "locality", "political" ] 
                      }, 
                      { 
                       "long_name" : "Khordha", 
                       "short_name" : "Khordha", 
                       "types" : [ "administrative_area_level_2", "political" ] 
                      }, 
                      { 
                       "long_name" : "Odisha", 
                       "short_name" : "OD", 
                       "types" : [ "administrative_area_level_1", "political" ] 
                      }, 
                      { 
                       "long_name" : "India", 
                       "short_name" : "IN", 
                       "types" : [ "country", "political" ] 
                      }, 
                      { 
                       "long_name" : "751012", 
                       "short_name" : "751012", 
                       "types" : [ "postal_code" ] 
                      } 
                     ], 
                     "adr_address" : "\u003cspan class=\"street-address\"\u003eNandankanan Rd\u003c/span\u003e, \u003cspan class=\"extended-address\"\u003eGajapati Nagar\u003c/span\u003e, \u003cspan class=\"locality\"\u003eBhubaneswar\u003c/span\u003e, \u003cspan class=\"region\"\u003eOdisha\u003c/span\u003e \u003cspan class=\"postal-code\"\u003e751012\u003c/span\u003e, \u003cspan class=\"country-name\"\u003eIndia\u003c/span\u003e", 
                     "formatted_address" : "Nandankanan Rd, Gajapati Nagar, Bhubaneswar, Odisha 751012, India", 
                     "formatted_phone_number" : "0674 651 0407", 
                     "geometry" : { 
                      "location" : { 
                       "lat" : 20.303133, 
                       "lng" : 85.82299499999999 
                      }, 
                      "viewport" : { 
                       "northeast" : { 
                        "lat" : 20.30319164999999, 
                        "lng" : 85.82321345 
                       }, 
                       "southwest" : { 
                        "lat" : 20.30295705, 
                        "lng" : 85.82233964999999 
                       } 
                      } 
                     }, 
                     "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/cafe-71.png", 
                     "id" : "b2e435456f40489ebf4de9c82ff8dc3eb0179a2c", 
                     "international_phone_number" : "+91 674 651 0407", 
                     "name" : "Cafe Coffee Day - Nandan Kanan Road", 
                     "opening_hours" : { 
                      "open_now" : false, 
                      "periods" : [ 
                       { 
                        "close" : { 
                        "day" : 0, 
                        "time" : "2300" 
                        }, 
                        "open" : { 
                        "day" : 0, 
                        "time" : "0900" 
                        } 
                       }, 
                       { 
                        "close" : { 
                        "day" : 1, 
                        "time" : "2300" 
                        }, 
                        "open" : { 
                        "day" : 1, 
                        "time" : "0900" 
                        } 
                       }, 
                       { 
                        "close" : { 
                        "day" : 2, 
                        "time" : "2300" 
                        }, 
                        "open" : { 
                        "day" : 2, 
                        "time" : "0900" 
                        } 
                       }, 
                       { 
                        "close" : { 
                        "day" : 3, 
                        "time" : "2300" 
                        }, 
                        "open" : { 
                        "day" : 3, 
                        "time" : "0900" 
                        } 
                       }, 
                       { 
                        "close" : { 
                        "day" : 4, 
                        "time" : "2300" 
                        }, 
                        "open" : { 
                        "day" : 4, 
                        "time" : "0900" 
                        } 
                       }, 
                       { 
                        "close" : { 
                        "day" : 5, 
                        "time" : "2300" 
                        }, 
                        "open" : { 
                        "day" : 5, 
                        "time" : "0900" 
                        } 
                       }, 
                       { 
                        "close" : { 
                        "day" : 6, 
                        "time" : "2300" 
                        }, 
09-16 23:13:59.455 7678-7678/com.example.tanmay.zomato W/System.err: org.json.JSONException: No value for international_phone_number 
09-16 23:13:59.455 7678-7678/com.example.tanmay.zomato W/System.err:  at org.json.JSONObject.get(JSONObject.java:389) 
09-16 23:13:59.455 7678-7678/com.example.tanmay.zomato W/System.err:  at com.example.tanmay.zomato.MainActivity$1.onResponse(MainActivity.java:140) 
09-16 23:13:59.455 7678-7678/com.example.tanmay.zomato W/System.err:  at com.example.tanmay.zomato.MainActivity$1.onResponse(MainActivity.java:134) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at android.os.Handler.handleCallback(Handler.java:739) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at android.os.Looper.loop(Looper.java:148) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5417) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
09-16 23:13:59.456 7678-7678/com.example.tanmay.zomato W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
09-16 23:19:34.592 7678-7684/com.example.tanmay.zomato W/art: Suspending all threads took: 7.170ms 
09-16 23:21:16.246 7678-7684/com.example.tanmay.zomato W/art: Suspending all threads took: 6.563ms 
09-16 23:25:28.666 7678-7684/com.example.tanmay.zomato W/art: Suspending all threads took: 6.054ms 

的功能仅仅是我使用的代码的简单版本。

+0

您是否使用API​​_KEY与否? – Nour

+0

“如果您在浏览器中看到JSON响应”无法做到这一点,那就需要一个API密钥。 – njzk2

+1

'international_phone_number'在你的json对象中没有这样的键。只有键是'html_attributions'和'结果' – njzk2

回答

0

您的错误指出密钥不在响应的顶层,而不是它不存在于数据中的任何位置。

您必须进入results密钥。

JSONObject obj =new JSONObject(response); 
JSONObject result = response.getJSONObject("results"); 
String inumber = result.getString("international_phone_number"); 
0

尝试getJSONObject insted刚刚得到。

像如下:

@Override 
public void onResponse(String response) { 
    try { 
     JSONObject obj =new JSONObject(response); 
     JSONObject results = object.getJSONObject("results"); 
     String internationalNumber = result.getString("international_phone_number"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
} 

}