Android 앱 만드는 중에 JSON 쓸 일이 있어서 library 를 찾아보니, 금방 나왔다. ( java + json 하면 바로 나온다. 사이트는
https://code.google.com/p/json-simple/ )
사실 이거 뭐 고민할 것도 없다. 다른 사람들도 이미 수두루빽빽 쓰고 있는거라, 안 될리가 없지....
라고 생각하고 그냥 가져다 쓴 게 화근이었다.
사실 나는 대부분의 경우, 파서를 일부러 가져다 쓰는 수고로움을 택하느니, 단순한 로직으로 파서를 만들어 썼다.
어짜피 Key:Value 의 map 형태의 데이터 구조이면 되기 때문에, 굳이 "라이브러리" 정도 되는 거창한 게 필요없다. 그냥 내가 대충 때려맞춰 쓰면 됐지.
그런데 이번엔 비정형 데이터가 좀 나오고, UTF-8 문제도 있고 해서, 써봤는데...
앙데. 코드가 안돌아가.
무쉰... 이노무 간단한 JSON 따위에서 계속 버그가 발생하길래, 하다 하다 도저히 원인을 모르겠어서
https://code.google.com/p/json-simple/ 에 있는 예제를 가져다 박아넣고 테스트해봤다.
근데, 공식 사이트의 예제도 에러나네?? 이건 뭥미?
이때부터 개삽질 모드 돌입.
라이브러리를 버전별로 깔아보고,
인터넷에서 나오는 샘플 코드도 여러개 뒤져 컴파일해보고...
이런저런 개삽질을 한 네시간 정도 하면서 ' 이상하네? 이게 이렇게 안될리가 없는건데???' 라고 생각하다가
결국 포기하고 오늘 아침에 출근하면서 다시 와서 작업하면서 "소스 코드를 다운로드해서 디버깅 하면서 한줄씩 돌려볼까..." 생각하다가,
혹시나 해서 에러 코드를 웹에 검색해 봤다.
" java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.JSONArray "
언제나 위대하신 StackOverFlow 께서, 이번에도 해결책을 제시해 주셨다.
http://stackoverflow.com/questions/20652284/java-lang-classcastexception-org-json-simple-jsonarray-cannot-be-cast-to-org-js
결론은, import 한 library 와 실제 사용한 라이브러리가 차이났던 게 문제.
json - simple 라이브러리를 사용했으므로 include 할 때
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONValue;
import org.json.parser.JSONParser;
import org.json.parser.ParseException;
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.JSONValue;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
를 사용해야 했던거다.
안그래도 바쁜데 이래저래 시간만 날리고... 에휴.
'프로그램' 카테고리의 다른 글
TABLE 태그에서, 외곽선을 엑셀처럼 단선 스타일로 변경. (0) | 2014.06.22 |
---|---|
java Thread, run(). runnable() 차이. (0) | 2014.04.23 |
java 에서 http 를 경유하여 데이터 송수신( GET / POST ) 할 때, 한글 인코딩 헤더 삽입 방법. (0) | 2014.04.02 |
PHP 에서 sleep() 을 쓰면, 서버가 통채로 멈출까? (2) | 2014.04.02 |
CentOS 에서의 한글 지원 설치. (0) | 2014.03.19 |