2016-03-25 21 views
1

WeblinkからJSONオブジェクトを解析して、AndroidListsに異なる値を格納するにはどうすればよいですか?WebサイトからJSONオブジェクトをandroidのarraylistに解析する方法

ユーザーのJSONオブジェクトは以下のようになります。それはウェブサイトから来ます。

{"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に解析し、名前、lon、latのような異なる値を配列リストに保存したいと考えています。

究極の目標は、JSONオブジェクトを使用して地図アクティビティにマーカーを配置することです。

答えて

4

GSONライブラリを使用して、Javaクラスに対してJSONを解析します。それは非常に使いやすいです。あなたがここにAndroidのSDKにはネイティブJSONObjectとJSONArray存在を使用することができます

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

私はそれが間違っていると思います。なぜなら、ArrayListに異なる値を格納するということです。しかし、あなたの答えはオブジェクトを返します。 Gson経由でコレクションを目指したい場合は、https://github.com/google/gson/blob/master/UserGuide.md#collections-examples –

+0

@dieter_hをご覧ください。回答を使用してウェブサイトから実際のデータを取得する方法? – user6020197

+0

jsonLineは 'JSON'の' string'です。サーバーから 'JSON'を取得したい場合は' Volley' libを使います。 –

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

コードを説明してもらえますか? – user6020197

+0

あなたがurl + /?r = m/calendar/contact_list&uid = 3 && subscriptionslist [pageindex] = 10&subscriptionslist [recordlimit] = 10のようなURLを取得した場合、これはOKです – TanLingxiao

0

::モデルの例を生成

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

https://developer.android.com/reference/org/json/JSONObject.html

あなたを許すJSONObject(String json)という名前のメソッドがありますこのようなことをする(テストされていない):

//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 
} 
それは GSONライブラリを見て後

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

はあなたのようなあなたのデータモデルからモデルクラスを作成することができます。これを使用すると、単にデータを次のようにインポートすることができます。

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

この後、DataTemplateから直接リストを取得します。

0

あなたが結果を格納することができますクラスとあなたがJavaのために、このjson.orgライブラリを使用して、以下のようなコードを使用することができますappropiateコンストラクタを持っていると仮定すると、

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"))); 

    } 

} 
関連する問題