Soru & Cevap

Android Json ArrayList ve Hashmap mantığı

11.03.2015 - 06:53

{"deneme":[{"ad":"ali","list":["a1","a2","a3"},{"ad":"veli","list":["b1","b2","b3"}]}

Elimde böyle dönen bir json verim var. Yapmak istediğim olay json parse ederken list alanını 
nasıl arrayList icersine atabilirim ve Hashmap<String,List<String>>map diye bir hashmap tanımlayıp buna map.put(ad.get(0),list) array.size kadar döndürmem lazım.

örneğin;
for(int i=0;i<deneme.size;i++)
{
map.put("ali",{"a1","a2","a3"})//i=0 olduğunda bunu ekleyecek
map.put("veli",{"b1","b2","b3"}) //i=1 olduğunda bunu ekleyecek
...
}

110 Görüntülenme

3 Cevap

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

picture-7541-1521024507.jpg
burhanaras
13.03.2015 - 04:31

Sana tavsiyem Spring for Android kullanman.

RestTemplate ile JSON'u web servisten çekersin, sonra Jackson kütuphanesi senin için otomatikman Jsonu objecte çevirir. Sen de tepe tepe kullanırsın.

Profile picture for user green_day
green_day
12.03.2015 - 11:24

Hashmap<String,List<String>>map =new Hashmap<String,List<String>>();

JSONParser jParser = new JSONParser();

JSONObject json = jParser.getJSONFromUrl(url);
                        
try {
    
    JsonArray user = json.getJSONArray("deneme");
                            
    for(int i = 0; i < user.length(); i++)

    {

        JSONObject c = user.getJSONObject(i);
                                    
        // Storing  JSON item in a Variable
                                    
        String ad= c.getString("ad");

                                    
        adObj.add(ad);//arrayListime atıyorum


        benim yapmak istediğim aslıda ad alanını arraye kaydettikten sonra 
                           
        list alanını tek tek çekmek. yani for içinde nasıl bir işlem yapacağım ki listleri tek tek çekip daha sonra
        
        map.put(ad.get(0),list); olacak yani key "ali" valuesi array olan "a1","a2","a3" ve bu illem sırayla devam 
        edecek.
        map.put(ad.get(1),list); olacak yani key "veli" valuesi array olan "b1","b2","b3"
        ....

        mapın içerisi hep böyle dolacak ve kac tane obje varsa.
        
        ben map a gidip bana keyi "ali" olanı getir dediğim de bana "a1","a2","a3" getirecek.    
    }
                                                                   
}

buradan sonrasını yazamadım hocam listin elamanlarına erişemiyorum:S

picture-1372-1408467635.jpg
ahmtbrk
11.03.2015 - 09:47

org.json kullanarak.

String json = {"deneme":[{"ad":"ali","list":["a1","a2","a3"},{"ad":"veli","list":["b1","b2","b3"}]};

JsonObject masterObject = new JsonObject(json);

JsonArray masterArray = masterObject.getJsonArray("deneme") yapacaksın

daha sonra bu array'in countu kadar dönen bir for döngüsü kur.

o döngü içerisinde List'e erişmek istersen.

JsonArray listArray = masterArray(i).getJsonArray("list");

bir for daha kurup listArray'i döneceksin tek tek her item gelir.

Komutlar hatalı olabilir aklıma gelecek şekilde yazdım ama mantığı bu.

greenday
12.03.2015 - 11:25
Biraz daha açabilir misiniz hocam daha yeniyim de json da :/ list içerisine erişebiliyorum gösterdiğiniz gibi peki list in elemanlarını nasıl array e atacağım yani list elamanlarını nasıl sırayla döndüreceğim.Biraz daha yardıma ihtiyacım var