2010-07-01 2 views
5

토큰 START_OBJECT에서의 java.lang.Class의 인스턴스를 직렬화 할 수 없습니다내가 propperly 내가 오류를 이해할 수

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.Class out of START_OBJECT token at [Source: [email protected]; line: 1, column: 1] at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:159) at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:192) at org.codehaus.jackson.map.deser.StdDeserializer$ClassDeserializer.deserialize(StdDeserializer.java:439) at org.codehaus.jackson.map.deser.StdDeserializer$ClassDeserializer.deserialize(StdDeserializer.java:421) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1588) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1116) at com.path.parser.JSon.Parser(JSon.java:65) at com.path.parser.JSon.main(JSon.java:29)

무엇 그것은 의미합니까 ??

아마도이 사실을 알고 있다면 내 실수를 발견 할 수 있습니다.

답변

10

귀하의 문제는 마지막 라인 :

MetadataContentBean.class.getClass() 

이 의미 당신이 볼 경우 .... "나에게 그 Class 개체에 대한 Class 개체를 얻을 후 나에게 MetadataContentBean 클래스의 Class 객체를 얻고," 내 말은. 따라서 잭슨에게 JSON을 Class 객체에 비 직렬화하도록 요청하고 있습니다.이 객체는 수행 방법을 모릅니다. 유형 "의 java.lang.Class"는 JSON 문자열로 직렬화된다

이것은 단지

MetadataContentBean.class 
+0

감사합니다. 문제가되었지만 어쨌든 오류의 의미가 무엇인지 알고 싶습니다 !! 다시 한 번 감사드립니다. –

4

이것은 아마 다른 문제와 관련,하지만 바로 답을 완료하려면 오류가 차이에서 비롯되는이 있어야한다 (클래스 이름 자체), 콩처럼 JSON 객체가 아닙니다. 따라서 deserializer는 JSON String을보고 대신 JSON Object (START_OBJECT로 시작)를보고 예외를 throw합니다.