프로그램

java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.JSONArray

(주)CKBcorp., 2014. 4. 4. 07:00
반응형


그러하다. 씨바.


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;




를 사용해야 했던거다.

안그래도 바쁜데 이래저래 시간만 날리고... 에휴.









 


반응형