Jackson2.6.6 버전에서 1건 언 마샬링 처리방법을 알고싶습니다!


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


조회수 270


3 답변


RESPONSE가 한건일 경우 {'문자열'} 이렇게 온다는 건가요?

추정컨데 배열 쪽은 RESPONSE가 {[]} 가 아니라, ['문자열1','문자열2',...] 이 아닌가요?

질문에서 예를 들어주신 {[]} 나 {'문자열'}, 두 경우 모두 JSON 표기법에 맞지 않는데...

서버쪽이 수정 가능하다면, {data: [] } 혹은 {data:''} 형태로 수정해보세요.

참고: http://www.json.org/json-ko.html

  • 2016년 05월 26일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

  • 답변 감사합니다!    TaeHwan Park   2016.5.26 17:32     
  • 정상적인 JSON표기법으로 넘어옵니다. 단지 여러건이 넘어올때는 item:[{}.{}] 이런식으로 오면 출력이 제대로 되는데 1건이 넘어올때 item{}이런식으로 넘어오면 에러가 발생합니다. 예전에 객체를 만들어서 할때는 와일드 제너릭스를 사용해서 처리 하였는데 이것은 객체에 데이터를 넣는것이아닌 readTree를 이용해서 item만 가져와서 Map에 바로 넣으려고 하는데 어떻게 하는지 방법을 모르겠습니다.    TaeHwan Park   2016.5.26 17:37     

{  
   "response":{  
      "header":{  },
      "body":{  
         "items":{  
            "item":[  
               {  },
               {  },
               {  },
               {  },
               {  },
               {  }
            ]
         },
         "numOfRows":999,
         "pageNo":1,
         "totalCount":6
      }
   }
}

  • 감사합니다~!    TaeHwan Park   2016.5.26 17:48     

{  
   "response":{  
      "header":{  },
      "body":{  
         "items":{  
            "item":{  }
         },
         "numOfRows":999,
         "pageNo":1,
         "totalCount":1
      }
   }
}

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close