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.
36
Görüntülenme
0 Beğeni