2012-01-03 4 views
0

Я работаю в android. Я хочу проанализировать данные 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 
       } 
      } 

     ] 
    } 
    ] 

} }

я хочу использовать значок, чтобы показать значок imageview., пожалуйста, предложите мне, как я могу получить это значение значка и как я могу использовать этот значок в изображении.

Заранее спасибо.

я пытаюсь это, но все же он создает сообщение об ошибке: - это мой код: - но все-таки создает ошибку: -

JSONArray группы = (JSONArray) jsonObj.getJSONObject ("ответ"). getJSONArray ("групп");

int length = groups.length(); если (длина> 0) {для (INT I = 0; я < длины; я ++)

{

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

для (Int J = 0, J < items.length(); j ++)

{

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

@ Отличное объяснение у Мичи. После того, как вы получите строку iconURL, просто следуйте его инструкциям, чтобы обновить ImageView – Bandreid

0

Обратитесь к документации JSON: http://www.json.org/javadoc/org/json/package-summary.html. Это очень просто.

В вашем случае вам нужно будет прочитать строку JSON для объекта JSON, затем проанализировать «ответ» как объект JSONObject, «группы» как JSONArray внутри «response», итерации через объекты JSONO, содержащиеся в «группах» «массив», проанализируйте «Элементы» как JSONArray внутри вашего JSONObject и сына на ...

Вы должны иметь возможность быстро добраться до URL-адреса.

2

Класс JSONObject может помочь вам:

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

Вы можете получить доступ к узлам в вашей структуре с помощью getJSONObject(String) и getJSONArray(String).

Например:

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

Когда вы получили ваш узел, который содержит ваше значение значка вы можете использовать метод getString(String), чтобы получить значок URL:

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

После вы получили URL у вас есть для загрузки изображения, прежде чем вы сможете его использовать. Как загрузить изображение из URL описывается here

Когда вы загрузили изображение, которое вы можете обновить ImageView:

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