Soru & Cevap

Volley ile json parse etmek ...

21.10.2016 - 05:49

Merhabalar, geliştirmeye çalıştığım uygulama hakkında büyük bir sorunum var. Foursquare api ile json veri alıyorum. Bu veriyi parse etmek çok zorladı, beceremedim. Json Object içinde, Json Array'lar bulunuyor ve bu Array'lardan bazı veriler işime yarıyor. Bu verileri çekmek için hayli yöntem denememe rağmen çekemedim.

Json örneği şu şekilde;

{  
   "meta":{  
      "code":200,
      "requestId":"5807d345498e7752ab86e584"
   },
   "response":{  
      "venues":[  
         {  
            "id":"5496b83b498e2fe76c24a8da",
            "name":"Hayaşa Cafe",
            "contact":{  

            },
            "location":{  
               "lat":39.746212666479884,
               "lng":39.492171002823575,
               "labeledLatLngs":[  
                  {  
                     "label":"display",
                     "lat":39.746212666479884,
                     "lng":39.492171002823575
                  }
               ],
               "distance":25,
               "cc":"TR",
               "city":"Erzincan",
               "state":"Erzincan",
               "country":"Türkiye",
               "formattedAddress":[  
                  "Erzincan",
                  "Türkiye"
               ]
            },
            "categories":[  
               {  
                  "id":"4bf58dd8d48988d16d941735",
                  "name":"Kafe",
                  "pluralName":"Kafeler",
                  "shortName":"Kafe",
                  "icon":{  
                     "prefix":"https:\/\/ss3.4sqi.net\/img\/categories_v2\/food\/cafe_",
                     "suffix":".png"
                  },
                  "primary":true
               }
            ],
            "verified":false,
            "stats":{  
               "checkinsCount":16394,
               "usersCount":4999,
               "tipCount":60
            },
            "allowMenuUrlEdit":true,
            "beenHere":{  
               "unconfirmedCount":0,
               "marked":false,
               "lastCheckinExpiredAt":0
            },
            "specials":{  
               "count":0,
               "items":[  

               ]
            },
            "hereNow":{  
               "count":19,
               "summary":"19 kişi burada",
               "groups":[  
                  {  
                     "type":"others",
                     "name":"Buradaki diğer kişiler",
                     "count":19,
                     "items":[  

                     ]
                  }
               ]
            },
            "referralId":"v-1476907845",
            "venueChains":[  

            ],
            "hasPerk":false
         }
		}
		}

Bu verideki "venues", onun içindeki "location", "stats" ve "herenow" objelerini çekmem gerekiyor. Volley kütüphanei daha kolay ve hızlı olduğu için bunu kullanyorum. OnCreate metodunda Volley için eklediğim kod da şu şekilde;


        // Volley nesnesi oluşturma
        JsonArrayRequest req = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();
                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {

                                JSONObject obj = response.getJSONObject(i);
                                yerler yer = new yerler();
                                yer.setName(obj.getString("name"));
                                yer.setId(obj.getString("id"));
                                yer.setLat(obj.getInt("lat"));
                                yer.setLng(obj.getInt("lng"));
                                yer.setDistance(obj.getInt("distance"));
                                yer.setHerenow(obj.getInt("herenow"));

                                // Oyun türü Json Array'idir.
                                JSONArray yerlerArry = obj.getJSONArray("venues");
                                ArrayList<String> venues = new ArrayList<String>();
                                for (int j = 0; j < yerlerArry.length(); j++) {
                                    venues.add((String) yerlerArry.get(j));
                                }
                                yer.setVenues(venues);

                                // Oyun nesneleri ArrayList'e ekleniyor.
                                yerlerList.add(yer);

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        }

                        //datalarda değişiklik olup olmadığı kontrol ediliyor değişiklik varsa liste güncelleniyor.
                        adapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hidePDialog();

            }
        });

        AppController.getInstance().addToRequestQueue(req);

Uygulamayı çalıştırdığımda son satırdaki kodda error veriyor. Array'ları da ek olarak ekliorum, yardımcı olacak birileri varsa şimdiden çok teşekkür ediyorum.

33 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user osman.asar
osman.asar
14.12.2019 - 11:38

ne hatası veriyor Birde debug ettin mi ? sonuç nedir?