Şimdi Ara

Android Json ArrayList ve Hashmap mantığı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
7
Cevap
1
Favori
469
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • {"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
    ...
    }



  • Parse isini jackson ya da gson kutupaneleri ile yaparsan daha rahat edersin, bir de neden map e atiyosun hepsini?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Mrb hocam öncelikle.

    Soruyu söyle sorsam daha iyi olacak sanırı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
    ...
    }

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

    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.




    }

    }



    Map kullanıyorum çünkü expandatablelistview adapter öyle dönüyor.
    Yada arraylist içerişine tekrar array oluşturmam gerekiyor ancak onu bilmiyorum. Örneğin Arraylist{{"a","b","c"},{"x","y","z"},{"b","j","k"}} böyle oluşturmam lazım ama bilmiyorum nasıl yapacağımı bide Arraylist in 0. indexsi bize yine bir array mi döndürüyor çünkü benim array olarak çekmem lazımki listview in adapterında ona göre doldurayım.




  •  
    HashMap<String, List<String>> map = new HashMap<>();
    String jsonString =
    "{\"deneme\":[" +
    "{\"ad\":\"ali\",\"" +
    "list\":[\"a1\",\"a2\",\"a3\"]}," +
    "{\"ad\":\"veli\",\"" +
    "list\":[\"b1\",\"b2\",\"b3\"]}" +
    "]" +
    "}";
    try {
    JSONObject jsonObject = new JSONObject(jsonString);
    JSONArray deneme = jsonObject.getJSONArray("deneme");
    int dlength = deneme.length();
    for (int i = 0; i < dlength; i++) {
    JSONObject user = deneme.getJSONObject(i);
    List<String> list = new ArrayList<>();
    JSONArray jsonList = user.getJSONArray("list");
    int jlength = jsonList.length();
    for (int j = 0; j < jlength; j++) {
    list.add(jsonList.getString(j));
    }
    map.put(user.getString("ad"), list);
    }
    } catch (JSONException e) {
    e.printStackTrace();
    }



    < Bu mesaj bu kişi tarafından değiştirildi lne -- 12 Mart 2015; 23:39:51 >




  • Çok teşekkür ederim hocam.
  • Bi sorum daha olacaktı izninizle hocam.

    map.put(user.getString("ad"), list);

    olarak kaydediyorum ancak for bittiginde mapın tüm keylerinde denenme array ındeki tüm listeler eklenmis oluyor

    acaba her forun basında list.clear(); mı yapıcaz?
  • ali_san A kullanıcısına yanıt
    Deneme arrayindeki her obje için yeni bir List nesnesi türetmelisin.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.