마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

JSONException 질문입니다.

0 추천

카카오톡 공지사항 페이지같은 액티비티를 만들고 있는데 DB에서 데이터를 가져와서 title, context 이런식으로 나누고 listview와 textview로 구상하려고 합니다. 근데 json 파싱과정에서 exception 에러가 나는거 같아 질문드립니다. ㅠㅠ                 공지사항 창으로 전환되자마자 꺼지네요

 

- etcboard.java

public class EtcBoard extends Activity 
{
	LinearLayout BoardLayout;
	ArrayList<BoardList> board_list = new ArrayList<BoardList>();
	BoardList temp;
	ListView listBoard;
	BoardAdapter mBoardAdapter;
	RelativeLayout progressLayout;
	TextView listBoardtext;
	String clientCd;
	
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		overridePendingTransition(0,0);
		super.onCreate(savedInstanceState);
	    setContentView(R.layout.etc_board);
	    clientCd = DataManager.getClientCd();
	    BoardLayout = (LinearLayout) findViewById(R.id.BoardLayout);
	    progressLayout = (RelativeLayout) findViewById(R.id.progressLayout4);
	    listBoard = (ListView) findViewById(R.id.listBoard);
	    listBoardtext = (TextView) findViewById(R.id.listBoardtext);
	    mBoardAdapter = new BoardAdapter(this, R.layout.list_board, board_list);
	    listBoard.setAdapter(mBoardAdapter);
		RequestParams params = new RequestParams();
		params.put("clientCd", clientCd);
		BoardLayout.setVisibility(View.GONE);
		progressLayout.setVisibility(View.VISIBLE);
		HttpClient.get("selectBoardList.cmd", params, new AsyncHttpResponseHandler()
		{
			public void onSuccess(String response)
			{
				try
				{
					JSONArray list = new JSONArray(response);
					board_list.clear();
					for(int i=0; i < list.length(); i++)
					{
						JSONObject obj = (JSONObject) list.get(i);
						temp = new BoardList(obj.getString("boardTitle"), obj.getString("boardContext"));
						board_list.add(temp);
					}
					progressLayout.setVisibility(View.GONE);
					BoardLayout.setVisibility(View.VISIBLE);
				}
				catch (JSONException e) 
				{
					throw new RuntimeException(e);
				}  
			}
		});
	}
	
	public void onResume()
	{
		overridePendingTransition(0,0);
		super.onResume();
	}
}

우선 자바파일은 이렇습니다.  이 외에 파일이 더 필요하시면 댓글로 달아주세요 ㅠㅠ

07-24 10:52:24.875: E/AndroidRuntime(27195): FATAL EXCEPTION: main
07-24 10:52:24.875: E/AndroidRuntime(27195): Process: com.neognp.neotms_app, PID: 27195
07-24 10:52:24.875: E/AndroidRuntime(27195): java.lang.RuntimeException: org.json.JSONException: End of input at character 9 of 
 
07-24 10:52:24.875: E/AndroidRuntime(27195): 
 
07-24 10:52:24.875: E/AndroidRuntime(27195): 
 
07-24 10:52:24.875: E/AndroidRuntime(27195): 
 
07-24 10:52:24.875: E/AndroidRuntime(27195):  
07-24 10:52:24.875: E/AndroidRuntime(27195): at com.neognp.neotms_app.EtcBoard$1.onSuccess(EtcBoard.java:67)
07-24 10:52:24.875: E/AndroidRuntime(27195): at com.loopj.android.http.AsyncHttpResponseHandler.onSuccess(AsyncHttpResponseHandler.java:232)
07-24 10:52:24.875: E/AndroidRuntime(27195): at com.loopj.android.http.AsyncHttpResponseHandler.onSuccess(AsyncHttpResponseHandler.java:220)
07-24 10:52:24.875: E/AndroidRuntime(27195): at com.loopj.android.http.AsyncHttpResponseHandler.onSuccess(AsyncHttpResponseHandler.java:245)
07-24 10:52:24.875: E/AndroidRuntime(27195): at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:365)
07-24 10:52:24.875: E/AndroidRuntime(27195): at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:135)
07-24 10:52:24.875: E/AndroidRuntime(27195): at android.os.Handler.dispatchMessage(Handler.java:102)
07-24 10:52:24.875: E/AndroidRuntime(27195): at android.os.Looper.loop(Looper.java:136)
07-24 10:52:24.875: E/AndroidRuntime(27195): at android.app.ActivityThread.main(ActivityThread.java:5120)
07-24 10:52:24.875: E/AndroidRuntime(27195): at java.lang.reflect.Method.invokeNative(Native Method)
07-24 10:52:24.875: E/AndroidRuntime(27195): at java.lang.reflect.Method.invoke(Method.java:515)
07-24 10:52:24.875: E/AndroidRuntime(27195): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
07-24 10:52:24.875: E/AndroidRuntime(27195): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
07-24 10:52:24.875: E/AndroidRuntime(27195): at dalvik.system.NativeStart.main(Native Method)
07-24 10:52:24.875: E/AndroidRuntime(27195): Caused by: org.json.JSONException: End of input at character 9 of 
 
07-24 10:52:24.875: E/AndroidRuntime(27195): 
 
07-24 10:52:24.875: E/AndroidRuntime(27195): 
 
07-24 10:52:24.875: E/AndroidRuntime(27195): 
 
07-24 10:52:24.875: E/AndroidRuntime(27195):  
07-24 10:52:24.875: E/AndroidRuntime(27195): at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
07-24 10:52:24.875: E/AndroidRuntime(27195): at org.json.JSONTokener.nextValue(JSONTokener.java:97)
07-24 10:52:24.875: E/AndroidRuntime(27195): at org.json.JSONArray.<init>(JSONArray.java:92)
07-24 10:52:24.875: E/AndroidRuntime(27195): at org.json.JSONArray.<init>(JSONArray.java:108)
07-24 10:52:24.875: E/AndroidRuntime(27195): at com.neognp.neotms_app.EtcBoard$1.onSuccess(EtcBoard.java:54)
07-24 10:52:24.875: E/AndroidRuntime(27195): ... 13 more
 
  End of input at character 9 of  <- 검색해보니 데이터가 없어서 나오는 익셉션이라고 하던데 9번째에 없다는건가요..?
자세한 글이 없어서 질문드려요...ㅜㅜ 
BMS (520 포인트) 님이 2014년 7월 24일 질문
넘어오는 json 문자열이 어떤건지는 확인해보셨나요?
그리고 list.length() -1 이 돼야하지 않나요?
넘어오는 문자열 확인하려면 log 달아서 봐야하나요??ㅠ
debug로 data내용을
http://jsonlint.com/ 에서 확인한번 해보세요.
이게 통과되면 data는 잘가져오는겁니다.
Log.d(response, "response"); 이렇게 해봤는데 로그가 안달려요... 로그에 찍히는 값이 있어야 그거로 저 사이트에서 확인할텐데 ㅠㅠㅠㅠㅠㅠㅠ

1개의 답변

0 추천
 
채택된 답변
response 파라미터값을 제대로 못받아와서 그러는거같은데..

response를 로그로 찍어보세요..

그리고 length()-1 하면 안됩니다;;
whdrb19 (23,520 포인트) 님이 2014년 7월 24일 답변
BMS님이 2014년 7월 25일 채택됨
로그찍을 때 Log.d(response, "response"); 이런식으로 try문 안에 작성해도 되나요? 실행해보니까 로그캣에 안찍히네요. 아님 어디에서 log를 찍어야할지...
public void onSuccess(String response)
            {
Log.v("test", "response = " + response);
 이렇게주시면됩니다 try catch안에 굳이.... 안들어가도됩니다
로그가 찍히는데 'response = ' 이러고 아무것도 없는거보면 값이 안넘어오나봐요 ㅠㅠ 으아 다른 사람이 하던거 넘겨받았더니 더 어렵네요 ㅠㅠ... 그럼 Httpclient 쪽이 잘못된건가요....
"selectBoardList.cmd" 이게 url인가요..?
DB에 조건이 잘못걸려있어서 수정했더니 json이 데이터 가져와서 로그에 찍히는데 그래도 오류가 나네요 SONException: No value for boardContext
값을 찾지 못하는건가요?
...