2013-10-25 49 views
-1
{ "gb": [ 
    { 
     "omrid": "gis-n", 
     "status": 0, 
     "grupp": 1 
    }, 
    { 
     "omrid": "gis-s", 
     "status": 0, 
     "grupp": 1 
    }, 
    { 
     "omrid": "gis-c", 
     "status": 0, 
     "grupp": 1 
    }, 
    { 
     "omrid": "gis-h", 
     "status": 0, 
     "grupp": 1 
    }, 
    { 
     "omrid": "gis-g", 
     "status": 0, 
     "grupp": 1 
    }, 
    { 
     "omrid": "hes", 
     "status": 0, 
     "grupp": 2 
    } ] } 

這是我的JSON字符串(編輯時間較短,因爲它在這裏變得太長了)。如何在Android中迭代JSON數據

我試圖找到一種方式來迭代每個組,並創建一個togglebutton與他們。

所以我想要做的是創建一個與「狀態」的開/關狀態「omrid」中所述的名稱的togglebutton。 「grupp」最終用於將切換分組,但現在並不重要。

我已經搜索和搜索了這個,沒有人似乎有我的具體JSON字符串組成,我是一個JSON/Android SDK noob。

+0

@Waqas StackOverflow是一個國際站點。請用英文寫下評論,而不是瑞典語:) –

+0

Waqas說過的翻譯:閱讀更多關於Json [here](http://www.mkyong.com/tutorials/java-json-tutorials/) –

+0

Detgörjag。通過看到一些瑞典研究人員,我有點興奮:) – waqaslam

回答

2

我會用JSONObject。在Android或PC上運行時沒有區別。

String str = "{" + 
      " \"gb\": [" + 
      "  {" + 
      "   \"omrid\": \"gis-n\"," + 
      "   \"status\": 0," + 
      "   \"grupp\": 1" + 
      "  }," + 
      "  {" + 
      "   \"omrid\": \"gis-s\"," + 
      "   \"status\": 0," + 
      "   \"grupp\": 1" + 
      "  }," + 
      "  {" + 
      "   \"omrid\": \"gis-c\"," + 
      "   \"status\": 0," + 
      "   \"grupp\": 1" + 
      "  }," + 
      "  {" + 
      "   \"omrid\": \"gis-h\"," + 
      "   \"status\": 0," + 
      "   \"grupp\": 1" + 
      "  }," + 
      "  {" + 
      "   \"omrid\": \"gis-g\"," + 
      "   \"status\": 0," + 
      "   \"grupp\": 1" + 
      "  }," + 
      "  {" + 
      "   \"omrid\": \"hes\"," + 
      "   \"status\": 0," + 
      "   \"grupp\": 2" + 
      "  }" + 
      " ]" + 
      "}"; 

    JSONObject jsonObject = new JSONObject(str); 

    JSONArray gb = jsonObject.getJSONArray("gb"); 

    for (int j = 0; j < gb.length(); j++) { 
     JSONObject element = gb.getJSONObject(j); 

     int status = element.getInt("status"); 
     int grupp = element.getInt("grupp"); 
     String omrid = element.getString("omrid"); 

     System.out.println("status=" + status + "; grupp=" + grupp + "; omrid=" + omrid); 

//create togglebutton here 
    } 

輸出:

status=0; grupp=1; omrid=gis-n 
status=0; grupp=1; omrid=gis-s 
status=0; grupp=1; omrid=gis-c 
status=0; grupp=1; omrid=gis-h 
status=0; grupp=1; omrid=gis-g 
status=0; grupp=2; omrid=hes 
+0

是的,謝謝!我正在進行大量的測試,並在1分鐘前得到了這個解決方案,你打敗了我;) –

0

這裏的代碼

JSONObject json = new JSONObject(String your_json_string); 
JSONArray arr = json.getJSONArray("gb"); 
for(int i = 0;i<arr.length();i++) 
{ 
JSONObject temp = arr.getJSONObject(i); 
temp.getString("omrid");//use them as your needs 
temp.getString("status");//use them as your needs 
temp.getString("grupp");// use them as your needs 
} 

希望它能幫助。

0

使用以下代碼進行迭代。

製作一個類JSONParser,如下所示。

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONObject; 

public class JSONParser { 

    public JSONParser() { 

    } 

    JSONObject jObj; 
    String json; 
    InputStream is = null; 

    public JSONObject getJsonFromUrl(String url) { 
     // TODO Auto-generated method stub 

     try { 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 

      is = httpEntity.getContent(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 

      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      json = sb.toString(); 

      System.out.println("Json String : " + json); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     try { 
      jObj = new JSONObject(json); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return jObj; 
    } 
} 

在您的MainActivity中,使用以下代碼進行迭代。

JSONParser parser = new JSONParser(); 
JSONObject o = parser.getJsonFromUrl("yourjsonurl"); 

JSONArray array = o.getJSONArray("gb"); 

for (int i = 0; i < array.length(); i++){ 
    JSONObject j = array.getJSONObject(i); 

    String omrid = j.getString("omrid"); 
    String status= j.getString("status"); 
    String grupp = j.getString("grupp"); 
}