2016-03-25 36 views
1

Bir JSON nesnesini bir web bağlantısından Android'e nasıl ayrıştırabilirim ve farklı değerleri ArrayLists'te depolayabilirim?JSON nesnesini bir web sitesinden bir arraylist'e nasıl ayrıştırabilirsiniz

Kullanıcıların JSON nesnesine aşağıdaki gibi görünüyor. Bir web sitesinden geliyor.

{"Users":[{"name":"Kane","lon":"4.371645","lat":"31.396911"}, 
      {"name":"Sam","lon":"4.129737","lat":"31.194824"}, 
      {"name":"Ryan","lon":"4.023134","lat":"31.298222"}, 
      {"name":"Jerry","lon":"4.262276","lat":"31.295054"}]} 

Android'de ayrıştırmak ve ad, lon ve lat gibi farklı değerleri bir dizi listesine kaydetmek istiyorum.

Son hedefim, işaretçileri bir harita etkinliğine yerleştirmek için JSON nesnesini kullanmaktır.

cevap

4

kütüphanesini, java sınıfına JSON numaralı ayrıştırmayı kullanın. Kullanması çok basit.

Gson gson = new Gson(); 
Response response = gson.fromJson(jsonLine, Users.class); 

Oluşturulan modelin örnek:

public class Users { 

     @SerializedName("Users") 
     @Expose 
     public List<User> Users = new ArrayList<User>(); 
    } 


    public class User { 

     @SerializedName("name") 
     @Expose 
     public String name; 

     @SerializedName("lon") 
     @Expose 
     public double lon; 

     @SerializedName("lat") 
     @Expose 
     public double lat; 

    } 
+0

ben yanlış olduğunu düşünüyorum. Çünkü soru, farklı değerleri ArrayList'e saklamak olduğunu söylüyor. Ancak cevabınız bir Nesne döndürür. Koleksiyonları Gson ile yapmak isterseniz, https://github.com/google/gson/blob/master/UserGuide.md#collections-examples –

+0

@dieter_h adresine bakın. Verilerinizi kullanarak web sitesinden gerçek verileri nasıl edinebilirim? ? – user6020197

+0

jsonLine, JSON ile "string" dir. Eğer sunucudan JSON'u kullanmak istiyorsanız 'Volley' lib kullanın. –

0
DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(HttpUtil.BASIC_URL 
       + HttpUtil.SUBSCRIPTION_URL); 
     try{ 
      if (cookie != null) { 
       // httpClient.setCookieStore(LoginJsonUtil.cookie); 
       List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2); 
       nameValuePair.add(new BasicNameValuePair("uid", 
         uid)); 
       nameValuePair.add(new BasicNameValuePair("subscriptionslist[pageindex]", 
         subscriptionslist_pageindex)); 
       nameValuePair.add(new BasicNameValuePair("subscriptionslist[recordlimit]", 
         subscriptionslist_recordlimit)); 
       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
+0

Kodunuzu açıklar mısınız lütfen? – user6020197

+0

url gibi bir URL alırsanız + /? R = m/calendar/contact_list & uid = 3 && subscriptionslist [pageindex] = 10 & subscriptionslist [recordlimit] = 10 bu tamam – TanLingxiao

0
Burada Android SDK üzerinde yerli JSONObject nesnesi ve JSONArray mevcut kullanabilirsiniz

: Teşekkür izin JSONObject(String json) adında bir yöntem yoktur https://developer.android.com/reference/org/json/JSONObject.html

Böyle bir şey yapmak için (test edilmemiş):

//creating your json object from your strong 
JSONObject jsonObject = new JSONObject(yourString); 
JSONArray users = jsonObject.getJSONArray("users");//this two lines throws a JSONException so put try{}catch{} block 
for(JSON user in users) 
{ 
     JSONObject currentUser = users.get(i); 
     //insert yout user inside your ArrayList here 
} 
o GSON kütüphanede bakmak sonra

public class DataTemplate{ 

public final List<User> Users; 

public DataTemplate(List<User> Users){ 
    this.Users = Users; 
} 

public static class User{ 
    public final String name; 
    public final double lon; 
    public final double lat; 

    public User(String name, double lon, double lat){ 
     //initialize elements 
    } 
} } 

:

1

Sen gibi veri modelinden bir model sınıfını oluşturabilirsiniz. , Bundan sonra

DataTemplate getTemplate(String path){ 
    try { 
     return new Gson().fromJson(new InputStreamReader(dataFromURLRequest), DataTemplate.class); 
    } catch (Exception e) {} 

sadece doğrudan DataTemplate dan listesini almak: basitçe olarak verileri alabilir bu kullanma.

0

sonuçları saklayabilir bir sınıf ve Java için bu json.org kütüphaneyi kullanarak aşağıda gibi kodu kullanabilirsiniz uygun olanı kurucuya sahip varsayarsak,

import org.json.*; 

ArrayList<Users> users = new ArrayList<Users>(); 

JSONObject o = new JSONObject(jsonString); 
JSONArray arr = obj.getJSONArray("Users"); 
for (int i = 0; i < arr.length(); i++) 
{ 
    JSONObject user = arr.getJSONObject(i); 

    users.add(new Users(user.getString("name"),user.getDouble("lat"),user.getDouble("lon"))); 

    } 

} 
İlgili konular