2013-10-25 4 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 문자열입니다 (여기서는 너무 길어서 편집 됨).안드로이드에서 JSON 데이터를 반복하는 방법

각 그룹을 반복하고 토글 버튼을 만들 수있는 방법을 찾으려고합니다.

그래서 내가하려는 것은 "상태"의 on/off 상태로 "omrid"에 명시된 이름으로 토글 버튼을 만드는 것입니다. "grupp"는 나중에 미래에 사용하기 위해 토글을 그룹으로 분류하지만 중요하지는 않습니다.

나는 이것에 대해 검색하고 검색 한 결과 내 JSON 문자열 구성을 가지고있는 것 같지 않으며 JSON/Android SDK와 관련하여 다소 멍청한 의견을 갖고 있습니다.

+0

@Waqas StackOverflow는 국제 사이트입니다. 스웨덴어가 아닌 영어로 의견을 적어주십시오. –

+0

Waqas가 말한 바 있습니다. Json [here] (http://www.mkyong.com/tutorials/java-json-tutorials/)에 대한 자세한 내용은 –

+0

을 참조하십시오. 방금 스웨덴 사람을 만나는 것에 흥분해 조금 웃었습니다 :) – 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"); 
} 
관련 문제