Jackson2.6.6 버전에서 1건 언 마샬링 처리방법을 알고싶습니다!
조회수 2946회
com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [map type; class java.util.HashMap, [simple type, class java.lang.Object] -> [simple type, class java.lang.Object]] from String value ('국립아시아문화전당 어린이문화원 어린이창작실험실 장비비품 구입'); no single-String constructor/factory method at [Source: "국립아시아문화전당 어린이문화원 어린이창작실험실 장비비품 구입"; line: 1, column: 1]
// JsonNode 필요한 데이터만 추출
JsonNode maps = mapper.readTree(jsonString).get(RESPONSE).get(BODY).get(ITEMS).get(ITEM);
ITEM이 다건인 경우 {[],[]} 형식으로 제대로 처리가 되어 작동을 하는데 ITEM이 1건일 경우 {}로 처리가 되어 받아집니다. 그러면 에러가 발생이 되는데요, 1건일때는 어떻게 처리할수 있나요?
Java 6, Jackson 2.6.6
-
(•́ ✖ •̀)
알 수 없는 사용자
3 답변
-
RESPONSE가 한건일 경우 {'문자열'} 이렇게 온다는 건가요?
추정컨데 배열 쪽은 RESPONSE가 {[]} 가 아니라, ['문자열1','문자열2',...] 이 아닌가요?
질문에서 예를 들어주신 {[]} 나 {'문자열'}, 두 경우 모두 JSON 표기법에 맞지 않는데...
서버쪽이 수정 가능하다면, {data: [] } 혹은 {data:''} 형태로 수정해보세요.
- 답변 감사합니다! 알 수 없는 사용자 2016.5.26 17:32
- 정상적인 JSON표기법으로 넘어옵니다. 단지 여러건이 넘어올때는 item:[{}.{}] 이런식으로 오면 출력이 제대로 되는데 1건이 넘어올때 item{}이런식으로 넘어오면 에러가 발생합니다. 예전에 객체를 만들어서 할때는 와일드 제너릭스를 사용해서 처리 하였는데 이것은 객체에 데이터를 넣는것이아닌 readTree를 이용해서 item만 가져와서 Map에 바로 넣으려고 하는데 어떻게 하는지 방법을 모르겠습니다. 알 수 없는 사용자 2016.5.26 17:37
-
{ "response":{ "header":{ }, "body":{ "items":{ "item":[ { }, { }, { }, { }, { }, { } ] }, "numOfRows":999, "pageNo":1, "totalCount":6 } } }
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
-
{ "response":{ "header":{ }, "body":{ "items":{ "item":{ } }, "numOfRows":999, "pageNo":1, "totalCount":1 } } }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력