{"MgmtNo":"0001","InstallAreaName":null,"HJDong":"0001","BJDong":"0001","StNo":"14","DistrictPolice":"0001",
"PoliceAreaGroup":"0001","PoliceAreaPos":"0001","Type":"0001","OldLineNo":"1111","MgmtLine":"0001"}
위 형식으로 json 이 넘어옵니다.
이것을 아래와 같은 코드로 파싱을 하는데요....
자꾸..
04-14 13:12:58.198: D/kowon test jsonex(22546): org.json.JSONException: End of input at character 0 of
04-14 13:12:58.198: W/System.err(22546): org.json.JSONException: End of input at character 0 of
04-14 13:12:58.205: W/System.err(22546): at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
04-14 13:12:58.205: W/System.err(22546): at org.json.JSONTokener.nextValue(JSONTokener.java:97)
04-14 13:12:58.205: W/System.err(22546): at org.json.JSONObject.<init>(JSONObject.java:154)
04-14 13:12:58.205: W/System.err(22546): at org.json.JSONObject.<init>(JSONObject.java:171)
04-14 13:12:58.205: W/System.err(22546): at ko.ko.kooo.KOTestJsonActivity.JsonParser(KOTestJsonActivity.java:107)
04-14 13:12:58.205: W/System.err(22546): at ko.ko.kooo.KOTestJsonActivity.json(KOTestJsonActivity.java:59)
04-14 13:12:58.205: W/System.err(22546): at ko.ko.kooo.KOTestJsonActivity$1.onClick(KOTestJsonActivity.java:51)
04-14 13:12:58.205: W/System.err(22546): at android.view.View.performClick(View.java:3480)
04-14 13:12:58.205: W/System.err(22546): at android.view.View$PerformClick.run(View.java:13983)
04-14 13:12:58.205: W/System.err(22546): at android.os.Handler.handleCallback(Handler.java:605)
04-14 13:12:58.205: W/System.err(22546): at android.os.Handler.dispatchMessage(Handler.java:92)
04-14 13:12:58.205: W/System.err(22546): at android.os.Looper.loop(Looper.java:137)
04-14 13:12:58.205: W/System.err(22546): at android.app.ActivityThread.main(ActivityThread.java:4340)
04-14 13:12:58.205: W/System.err(22546): at java.lang.reflect.Method.invokeNative(Native Method)
04-14 13:12:58.205: W/System.err(22546): at java.lang.reflect.Method.invoke(Method.java:511)
04-14 13:12:58.205: W/System.err(22546): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-14 13:12:58.205: W/System.err(22546): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-14 13:12:58.205: W/System.err(22546): at dalvik.system.NativeStart.main(Native Method)
04-14 13:12:58.205: D/kowon test jsonex(22546): org.json.JSONException: End of input at character 0 of
위와 같은 오류가 납니다.
대체 뭐가 잘못된걸까요???
코드 올립니다. 많은 질타와 가르침 부탁드립니다.
public class KOTestJsonActivity extends Activity {
Button btn;
public static TextView MgmNoText, InstallText, HJDongText, BJDongText, StNoText, DistrictText, PGroupText, PPosText, TypeText, OldLineText, LineText,
MLineText;
StringBuffer json_data = new StringBuffer(); /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);btn = (Button) findViewById(R.id.btn); InstallText = (TextView) findViewById(R.id.textview2); HJDongText = (TextView) findViewById(R.id.textview3);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
json();
}
});
}
public void json(){
getJsonData();
try{
JsonParser();
}catch(JSONException e){
e.printStackTrace();
Log.d("kowon test jsonex", e.toString());
}
}
public void getJsonData(){
new AsyncTask<Void, Void, Void>(){
protected Void doInBackground(Void... params) {
String line = null;
BufferedReader buffer = null;
try{
URL url = new URL("http://mvia.iptime.org/ko2.php");
HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection();
buffer = new BufferedReader(new InputStreamReader(urlConnect.getInputStream()));
while((line = buffer.readLine()) != null){
json_data.append(line);
}
} catch (Exception e){
Log.d("kowon test getjsondata ex", e.toString());
} finally {
try{
buffer.close();
} catch (Exception e1) {
Log.d("kowon test getjsondata ex", e1.toString());
}
}
return null;
}
}.execute();
}
public void JsonParser() throws JSONException{
String resultMgmt = "";
String resultInstall = "";
String resultHJdong = "";
JSONObject jsonObject = new JSONObject(json_data.toString());
Log.d("kowon test json", jsonObject.toString());
resultMgmt += jsonObject.getString("MgmtNo");
MgmNoText = (TextView) findViewById(R.id.textview1);
MgmNoText.setTag(resultMgmt);
Log.d("kowon test Mgmt", resultMgmt);
}
}



getJsonData 에서 AsyncTask 를 사용해서 json 데이터를 받아오기도 전에 JsonParser 가 실행되어
json_data 에 데이터가 없는 상태이므로 당연한 결과입니다.
문제를 해결하려면 AsyncTask 의 onPostExecute 메소드에 JsonParser 가 실행되도록 하던지
AsyncTask 대신 일반 쓰레드로 json 데이터를 받아온 다음 view.post 해서 UI 갱신해야겠죠.