2016-09-16 1 views
-1

Bon, alors je suis à la recherche de données json à partir de cette URL;Impossible d'extraire les données json

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

Mais pour de nombreuses balises, le logcat est dire 'aucune valeur'. Si vous voyez la réponse JSON dans le navigateur, ces données sont clairement visibles.

extrait de code:

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 

Les fonctions ne sont que les brèves versions du code que j'utilise.

+0

Utilisez-vous un api_key ou non? – Nour

+0

"Si vous voyez la réponse JSON dans le navigateur" ne peut pas faire cela, cela nécessite une clé API. – njzk2

+1

'international_phone_number' il n'y a pas de telle clé dans votre objet json. seules les clés sont 'html_attributions' et' result' – njzk2

Répondre

0

Votre erreur indique que la clé n'est pas au niveau le plus élevé de la réponse, pas qu'elle n'existe nulle part dans les données.

Vous devez entrer dans la clé results.

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

Essayez getJSONObject insted de simplement obtenir.

Comme suit:

@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(); 
} 

}