2012-01-03 9 views
0

私はアンドロイドで働いています。私は私のjsonデータを解析したい。私のjson結果を解析する方法

これは私のJSONデータである: -

{

"レスポンス":{

"groups":[ 

    { 

     "type":"nearby", 
     "name":"Nearby", 
     "items":[ 
      { 
       "id":"4ed0c8f48231b9ef88fe5f09", 
       "name":"Banayan Tree School", 
       "contact":{ 

       }, 
       "location":{ 
       "lat":26.857954980225713, 
       "lng":75.76602927296061, 
       "distance":510 
       }, 
       "categories":[ 
       { 
        "id":"4bf58dd8d48988d1a8941735", 
        "name":"General College & University", 
        "pluralName":"General Colleges & Universities", 
        "shortName":"Other - Education", 
        "icon":"https:\/\/foursquare.com\/img\/categories\/education\/default.png", 
        "parents":[ 
         "Colleges & Universities" 
        ], 
        "primary":true 
       } 
       ], 
       "verified":false, 
       "stats":{ 
       "checkinsCount":5, 
       "usersCount":4, 
       "tipCount":0 
       }, 
       "hereNow":{ 
       "count":0 
       } 
      } 

     ] 
    } 
    ] 

} }

私はのアイコンを表示するようにアイコンを使用したいですイメージビュー。私はこのアイコンの値をどのように取得することができますか、どのように私はユーザーの画像ビューでこのアイコンのURLを教えてください。

ありがとうございます。

は、私はこれをしようとしていますが、それでもそれはエラーを作成している: - これは私のコードです: - それでもエラーを作成しています: -

JSONArrayグループ=(JSONArray)jsonObj.getJSONObject( "レスポンス")。 getJSONArray( "groups");

int length = groups.length(); (INT J = 0; J < items.length(); J ++)用

{

JSONObject group= (JSONObject) groups.get(i); JSONArray items =(JSONArray) group.getJSONArray("items"); 

(長さ> 0){式(I ++; I <長さI = 0の整数)のための場合

{

JSONObject item =(JSONObject)items.get(j);

JSONObject iconobject =(JSONObject)item.getJSONObject( "カテゴリ");//この作成されたエラーそのJSON.typeMismatch

venue.icon = iconobject.getString( "アイコン")。

}}}}

答えて

1

これを試してみてください:

try { 
    JSONArray jArray = new JSONArray(result); 
    // get into the 'groups' array 
    JSONObject jData = jArray.getJSONObject(0); 
    JSONArray jGroupsArray = jData.getJSONArray("groups"); 
    // get into the 'items' array 
    jData = jArray.getJSONObject(2); 
    JSONArray jItemsArray = jData.getJSONArray("items"); 
    // get into the 'categories' array 
    jData = jArray.getJSONObject(4); 
    JSONArray jCategoriesArray = jData.getJSONArray("categories"); 
    // get into the 'icon' value as String and use it as you please 
    jData = jArray.getJSONObject(4); 
    String iconURL = jData.getString("icon"); 
} catch (JSONException e) { 
    Log.e(Constants.LOG_TAG, "Error parsing data", e); 
} 

希望これは

+0

に役立ちます@ michaの投稿は優れた説明をしています。 iconURL文字列を取得したら、指示に従ってImageViewを更新してください – Bandreid

0

JSONのドキュメントを参照してください:http://www.json.org/javadoc/org/json/package-summary.html。それは本当に簡単です。

あなたの場合、JSONオブジェクトをJSONオブジェクトに読み込み、JSONオブジェクトとして "response"を解析し、 "response"内のJSONArrayとして "groups"を解析し、 "groups"に含まれるJSONObjectを反復処理する必要があります"配列、JSONObjectの中のJSONArrayとして" Items "を解析してください。

あなたはすぐにURLにアクセスできるはずです。

2

クラスJSONObjectはあなたを助けることができる:

String data = ... // your json data 
JSONObject json = new JSONObject(data); 

あなたがgetJSONObject(String)getJSONArray(String)の助けを借りて、あなたの構造内のノードにアクセスすることができます。例えば

:あなたが持っているURLを得た後

JSONObject firstCategory = categories.getJSONObject(0); 
String iconUrl = firstCategory.getString("icon"); 

:あなたのアイコン値を使用すると、アイコンのURLを取得するにはgetString(String)メソッドを使用することができます含まれているあなたのノードを得た

JSONObject response = json.getJSONObject("response"); 
JSONArray groups = response.getJSONArray("groups"); 
JSONObject firstGroup = groups.getJSONObject(0); 
// and so on 

画像をダウンロードしてから使用することができます。どのURLから画像をダウンロードするには、あなたがImageViewのを更新することができ、画像をダウンロードした場合はhere

に記載されている:

Bitmap image = loadBitmap(iconUrl); // how to implement loadBitmap is shown in the link above 
ImageView iv = findViewById(R.id.my_imageview); 
iv.setImageBitamp(image); 
関連する問題