2017-02-21 8 views
1

JSONデータを取得しています。 GridViewに&表示イメージをダウンロードする際のJSONArrayの使い方どうすればこれを達成できますか?私はDownload and Display Image in Android GridViewを参照します。これはJSONObjectです。parseResult [JSONArray]をパースする方法は?

ここは私のコードです。ここ

private void parseResult(String result) { 
    try { 
     JSONObject response = new JSONObject(result); 
     JSONArray posts = response.optJSONArray("posts"); 
     GridItem item; 
     for (int i = 0; i < posts.length(); i++) { 
      JSONObject post = posts.optJSONObject(i); 
      item = new GridItem(); 
      JSONArray img = post.getJSONArray("img"); 
      if (null != attachments && attachments.length() > 0) { 
       JSONObject attachment = attachments.getJSONObject(0); 
       if (img!= null) 
        item.setImage(img.getString("url")); 
      } 
      mGridData.add(item); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

、コードを参照してください。ここで

{ 
    "status": "ok", 
    "count": 45, 
    "count_total": 397, 
    "pages": 9, 
    "posts": [ 
    { 
     "id": 12378, 
     "url": "http://stacktips.com/tutorials/android/speech-to-text-in-android", 
    }, 
    {...}, 
    {...} 
    ] 
} 

[ 
    { 
    "id": "95", 
    "name": "Cherry", 
    "menu": [ 
     { 
     "menu_id": "18", 
     "img": "925dd3ad6d50fa5686a82af26515be5d.jpg" 
     } 
    ] 
    }, 
    {...}, 
    {...} 
] 
+0

ああ、なぜあなたはJSONArrayを使用する必要がありますか? jsonの文字列をjavaオブジェクトにマップしないでください。 –

+0

それを解決するには? – WPG

答えて

1

は、このコードを試してみてください、私のJSONです:

参照してくださいコードの場合:

try{ 
    JSONObject object = new JSONObject (result); 
    JSONArray jsonArray = object.getJSONArray("posts"); 
    for(int i=0;i<jsonArray.length();i++){ 
     JSONObject object = jsonArray.getJSONObject(i); 
     String id = object.getString("id"); 
     String img_url = object.getString("url"); 

     item = new GridItem(); 
      if (img_url!= null) 
        item.setImage(img_url); 
      mGridData.add(item); 
     } 
    } 
    catch (JSONException e){ 
      e.printStackTrace(); 
    } 
を二JSONについては

ここ

try{ 
    JSONArray jsonArray = new JSONArray(result); 
    for(int i=0;i<jsonArray.length();i++){ 
     JSONObject object = jsonArray.getJSONObject(i); 
     String id = object.getString("id"); 
     String name = object.getString("name"); 

     JSONArray menu = object.getJSONArray("menu"); 
     for(int j=0;j<menu.length();j++){ 
      JSONObject menu_object = menu.getJSONObject(j); 
      String menu_id = menu_object.getString("menu_id"); 
      String image_url = menu_object.getString("img"); 
      item = new GridItem(); 
       if (image_url!= null) 
         item.setImage(image_url); 
       mGridData.add(item); 
      } 
     } 
    } 
    catch (JSONException e){ 
      e.printStackTrace(); 
} 
+0

** img.getString( "url")**私は** image_url **を変更しますが、getStringメソッドを解決することはできません – WPG

+0

'img'はJSONオブジェクトではありません....上記のコードを試してください – rafsanahmad007

+0

編集を確認してください.. 2つのJSONがありますか?どのJSON画像のURLを解析したいですか? – rafsanahmad007

1

はあなたのソリューションです:

try { 
     JSONObject response = new JSONObject(result); 

     JSONArray menu = response.optJSONArray("menu"); 

     GridItem item; 

     for (int i = 0; i < menu.length(); i++) { 

      JSONObject post = menu.optJSONObject(i); 

      String menu_id=post.getString("menu_id"); 

      String img=post.getString("img"); 


      item = new GridItem(); 

      item.setImage(img); 


      mGridData.add(item); 

     } 
    } 
} 
0

グーグル-gsonライブラリを使用してくださいlink

例JSON文字列

{ 
    "title": "Free Music Archive - Albums", 
    "message": "", 
    "errors": [], 
    "total": "11259", 
    "total_pages": 2252, 
    "page": 1, 
    "limit": "5", 
    "dataset": [ 
    { 
     "album_id": "7596", 
     "album_title": "Album 1", 
     "images": [ 
     { 
      "image_id": "1", 
      "user_id": null 
     } 
     ] 
    } 
    ] 
} 

Albums.java

class Albums { 
    public String title; 
    public String message; 
    public List<string> errors = new ArrayList<string>(); 
    public String total; 
    public int total_pages; 
    public int page; 
    public String limit; 
    List<dataset> dataset = new ArrayList<dataset>(); 
} 

メインクラス

Albums albums = gson.fromJson(jsonString, Albums.class); 

Reference

関連する問題