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

조회수 2781회

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:''} 형태로 수정해보세요.

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

    • 답변 감사합니다! 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
          }
       }
    }
    
    • 감사합니다~! 2016.5.26 17:48
  • {  
       "response":{  
          "header":{  },
          "body":{  
             "items":{  
                "item":{  }
             },
             "numOfRows":999,
             "pageNo":1,
             "totalCount":1
          }
       }
    }
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)