Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
MongoDB의 json데이타를 GSON을 이용하여 parsing할때 아래와 같은 오류가 발생할 수 있는데 이는 ObjectId값이 String이 아닌 Object(클래스 형태)로 인식이 되어 발생하는 문제이다.
그래서 GSON 파싱할때 사용되는 클래스를 생성할때 {"_time":1480579094,"_machine":-1422354433,"_inc":-987106123,"_new":false}를 담을 수 있는 class를 생성하고 이 클래스를 멤버 변수로 가지고 있는 클래스를 만들어서 지정해주면 해결된다.
--------------오류 메세지--------------------
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 9
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
at com.google.gson.Gson.fromJson(Gson.java:803)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at com.google.gson.Gson.fromJson(Gson.java:689)
at com.gooper.icbms.sda.sf.TripleService.getTriple(TripleService.java:64)
at com.gooper.icbms.sda.kafka.onem2m.AvroOneM2MDataSubscribe$ConsumerT.run(AvroOneM2MDataSubscribe.java:135)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 9
at com.google.gson.stream.JsonReader.nextString(JsonReader.java:821)
at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:358)
at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:346)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
... 9 more
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
» | [JSON 파싱]mongodb의 document를 GSON을 이용하여 parsing할때 ObjectId값에서 오류 발생시 조치방법 | 2017.01.18 | 952 |
7 | like검색한 결과를 기준으로 집계를 수행하는 java 소스 | 2016.12.19 | 828 |
6 | MongoDB에 있는 특정컬럼의 값을 casting(string->integer)하여 update하기 java 소스 | 2016.12.19 | 1038 |
5 | mongodb aggregation query를 Java code로 변환한 샘플 | 2016.12.15 | 1284 |
4 | mongodb에서 큰데이타 sort시 오류발생에 대한 해결방법 | 2015.12.22 | 965 |
3 | console명령과 API비교 | 2015.12.21 | 937 |
2 | SQL문장과 Mongo에서 사용하는 명령어를 비교한 것입니다. | 2015.09.30 | 803 |
1 | mongodb 2.6.6 설치(64bit) | 2015.09.30 | 420 |