2011-07-28 2 views
1

원하는 값이 배열에 있는지 테스트하려고합니다. 첫 번째 토스트 작업 아래에서 JSON 데이터 전체를 뱉어내는 것입니다.토스터 배열 값이 작동하지 않습니다.

하지만 새 JSONArray에서 [1]의 값을 표시하려고하는 두 번째 토스트 인 jsonArray가 다음 오류를 내게 제공합니다. jsonArray can not be defined to a variable 올바르게 참조하지 않았습니까? 는 "시도"에 있기 때문에 그것은 또한 범위의 문제가 될 수있는 피드백을 기반으로

try{ 
    JSONArray jsonArray = new JSONArray(jsonData); 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
Toast.makeText(MainActivity.this, jsonData, Toast.LENGTH_LONG).show(); 
Toast.makeText(MainActivity.this, jsonArray[1], Toast.LENGTH_LONG).show(); 

편집해볼 내가 사용해야합니까? 그렇다면 어떻게 스크립트의 나머지 부분에서도 사용할 수있게 만들 수 있습니까?

+0

범위 지정 문제가 있습니다. 나는 나의 대답을 업데이트했다. –

답변

3

JSONArray 그냥 자바 객체가 아니라 당신이 그것에 배열 인덱싱을 사용할 수 없음을 의미 배열입니다. 아마도 jsonData[1]을 의미할까요? 또한 jsonArraytry 블록에서 선언되고 초기화되므로 Toast 호출의 범위에 포함되지 않습니다.

try 
{ 
    JSONArray jsonArray = new JSONArray(jsonData); 
    // ... 
    Toast.makeText(MainActivity.this, jsonData.get(1), Toast.LENGTH_LONG).show(); 
} 
// ... 
+0

괜찮아요, jsonArray가 자바 배열로 바꾸어 놓은 것 같아서 나머지 프로젝트에서 사용할 수있을 것 같아요. – Denoteone

+1

아니,'JSONArray'로 선언 된 것을 보시겠습니까? 즉 Java 배열이 아닙니다. List를 배열로 바꾸려면 [List # toArray()]] (http://download.oracle.com/javase/6/docs/api/java/util/List.html#)를 사용하십시오. toArray()). 왜 목록에 색인을 붙이려고하면 '[List # get (int)'] (http://download.oracle.)을 사용하십시오. com/javase/6/docs/api/java/util/List.html # get (int)). –

+0

감사합니다. 나는 잘못된 이유로 JSONArray를 사용하고 있다고 생각합니다. 배열과 같이 직접 읽을 수 있다면 왜 배열에 넣어야하는지 잘 모르겠습니다. – Denoteone

2

jsonArray 변수가 토스트와 동일한 범위 내에서 선언되지 않았습니다. 이 같은

시도 뭔가 :

try { 
     JSONArray jsonArray = new JSONArray(jsonData); 

     Toast.makeText(MainActivity.this, jsonData, Toast.LENGTH_LONG).show(); 
     Toast.makeText(MainActivity.this, jsonArray[1], Toast.LENGTH_LONG).show(); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

당신의 도움에 감사드립니다 +1 – Denoteone

3

변경 마지막 줄에 : jsonData한다고 가정하는 것은 Collection 당신이 그 요소 1은 문자열 알고있는 경우,

Toast.makeText(MainActivity.this, jsonArray.get(1).toString(), Toast.LENGTH_LONG).show(); 

또는

Toast.makeText(MainActivity.this, jsonArray.getString(1), Toast.LENGTH_LONG).show(); 

편집

수정 사항에 따라 나는 그것을 보지 못했지만 당황 스러웠습니다. 그렇습니다. 범위 문제가 있습니다. 위에서 언급 한 것 외에 try 블럭 안에 토스트를 이동하십시오.

관련 문제