2016-07-25 4 views
-2

내 적성하지만 나에게주는 오류안드로이드에서 json 객체를 두 번 설정하는 방법은 무엇입니까?

은 내 JSON은 :

{ 
    "status":true, 
    "message":"Front About Found", 
    "data":{ 
     "FrontAbout":{ 
      "ABOUT_ID":"1", 
      "CONTENT":"and the arts. ", 
      "SCHOOL_NAME":"The New School", 
      "ADDRESS":" Western Corridor", 
      "LOGO":"14643339731.png" 
     } 
    } 
} 

은 내 샘플 코드 :

{ 
    JSONArray jsonarray = jObj.getJSONArray("data"); 

    for (int z = 0; z < jsonarray.length(); z++) { 

     JSONObject jobj = jsonarray.getJSONObject(z); 

     JSONObject jobj_FrontAbout = jobj.getJSONObject("FrontAbout"); 

     school = jobj_FrontAbout.getString("SCHOOL_NAME"); 
     add = jobj_FrontAbout.getString("ADDRESS"); 
     phone = jobj_FrontAbout.getString("CONTACT_NO"); 
     email = jobj_FrontAbout.getString("EMAIL"); 
     cont = jobj_FrontAbout.getString("CONTENT"); 
     image = jobj_FrontAbout.getString("LOGO"); 

     setData(); 

     loadingView.dismiss(); 

    } 

    loadingView.dismiss(); 
    if (loadingView != null && loadingView.isShowing()) { 
     loadingView.dismiss(); 
    } 
} 

은 그 내게 줄 오류 "가 된 JSONObject는로 변환 할 수 없습니다 JSONArray "

텍스트로 간단하게 설정하고 싶습니다. 배열 에 솔루션을 나에게

+1

귀하의 Json 문자열이 유효하지 않습니다. 먼저 수정하십시오 – Jas

+1

최종 JSONArray jObject = 새 JSONArray ("data"); –

+2

' "data": { "FrontAbout"'이 "데이터"는 배열이 아닌 JSON 객체입니다. json 배열은''data ''와 같습니다 : [...]'. 'JSONObject jsonarray = jObj.getJSONObject ("data");' – kushpf

답변

0

이 같은 구문 분석 할 수 있습니다.

JSONObject jobj = jsonarray.getJSONObject(z); 
status=jobj.getBoolean("status"); 
message=jobj.getString("message"); 
         JSONObject dataObject = jobj.getJSONObject("data"); 
         JSONObject frontAboutObject = dataObject.getJSONObject("FrontAbout"); 

         school = frontAboutObject.getString("SCHOOL_NAME"); 
         add = frontAboutObject.getString("ADDRESS"); 
         phone = frontAboutObject.getString("CONTACT_NO"); 
         email = frontAboutObject.getString("EMAIL"); 
         cont = frontAboutObject.getString("CONTENT"); 
         image = frontAboutObject.getString("LOGO"); 
0

을주지하시기 바랍니다하지 뷰이 시도 :

JSONObject jsonObj= jObj.getJSONObject("your json string"); 
JSONObject jsonInnerObj= jsonObj.getJSONObject("data"); 
+0

를 볼 것을 생각한다 ** 당신을 감사해라 ** Jas –

+0

는 그 도움을했다?. – Jas

+0

네, 완벽하게 작동합니다. –

2

여기에서 "데이터"를 JSOnArray로 구문 분석합니다. "데이터"는 JSONObject입니다.

JSON 노드는 대괄호 또는 중괄호로 시작합니다. [와 {의 차이점은 대괄호 ([)가 JSONArray 노드의 시작을 나타내지 만 중괄호 ({)는 JSONObject을 나타냅니다.

{ 
JSONObject dataJsonObject = jObj.getJSONObject("data"); 

for (int z = 0; z < dataJsonObject.length(); z++) { 

    JSONObject jobj = jsonarray.getJSONObject(z); 

    JSONObject jobj_FrontAbout = jobj.getJSONObject("FrontAbout"); 

    school = jobj_FrontAbout.getString("SCHOOL_NAME"); 
    add = jobj_FrontAbout.getString("ADDRESS"); 
    phone = jobj_FrontAbout.getString("CONTACT_NO"); 
    email = jobj_FrontAbout.getString("EMAIL"); 
    cont = jobj_FrontAbout.getString("CONTENT"); 
    image = jobj_FrontAbout.getString("LOGO"); 

    setData(); 

    loadingView.dismiss(); 

} 

loadingView.dismiss(); 
if (loadingView != null && loadingView.isShowing()) { 
    loadingView.dismiss(); 
} 

은} 잘하면 당신은 당신의 오류를 제거합니다. CHEERS