반응형
Jackson과 같은 메서드 오류는 없습니다.
잭슨을 이용해서 POJO를 연재 및 역직렬화하려고 합니다.POJO에서 JSON으로 가는 것은 완벽하게 작동하지만 다른 방향으로 가는 것은 그렇지 않습니다.
나는 POJO가 있다.
public class Event {
private String kind;
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
}
실행 및 테스트를 위해 패키지 calendar.model을 실행합니다.
Event event = new Event();
event.setKind("This is a kind");
String json = objectMapper.writeValueAsString(event);
// RETURNS: "{\"kind\":\"This is a kind\"}"
objectMapper.readValue(json, Event.class);
예외 발생
java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonParser.getValueAsString()Ljava/lang/String;
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:24)
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:11)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:375)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:98)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:308)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2796)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1942)
at calendar.controller.RootController.details(RootController.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:100)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:604)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:565)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
JSON을 POJO로 만들기 위해 나는 할 수 있는 모든 것을 가지고 놀았지만, 그것은 작동하지 않을 것이다.JSON에서 Map 타입으로 매핑하면 동작합니다.
도와 주셔서 감사해요.
편집
여기 내 친척 중에 잭슨을 위한 GREP가 있다
± > mvn dependency:tree | grep jackson -I-
[INFO] +- com.google.http-client:google-http-client-jackson2:jar:1.13.1-beta:compile
[INFO] | \- com.fasterxml.jackson.core:jackson-core:jar:2.0.5:compile
[INFO] | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.1.1:compile
[INFO] | | +- com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.1.1:compile
[INFO] | | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.1.1:compile
[INFO] | | | +- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.1.0:compile
잭슨2 말고는 다른 버전의 잭슨은 없는 것 같아요.
실행 중인 전체 방식은 스프링 컨트롤러 방식입니다.
@RequestMapping(value = "/")
public Event root() throws IOException {
Event event = new Event();
event.setKind("This is a kind");
String json = objectMapper.writeValueAsString(event);
// RETURNS: "{\"kind\":\"This is a kind\"}"
Event mapped = objectMapper.readValue(json, Event.class);
return mapped;
}
문제가 있는 것 같습니다만, 호환성이 없는 버전의 제품이jackson-core
그리고.jackson-databind
Jackson-core 2.0.5를 도입하고 있습니다만, 적어도 2.1.0이 필요하다고 생각합니다.
예외의 첫 번째 줄은 메서드를 찾을 수 없음을 나타냅니다.JsonParser.getValueAsString()
2.0.5용 API 문서를 보면 이 메서드는 실제로 존재하지 않습니다.2.1.0에서 추가된 것 같습니다.
따라서 의존관계를 수정해야 합니다.대부분은 2.0.5를 제외하고 2.1.0을 포함하는 것입니다.
언급URL : https://stackoverflow.com/questions/14914728/jackson-json-and-no-such-method-errors
반응형
'programing' 카테고리의 다른 글
React Redux 앱의 서버에서 초기 데이터를 가져오려면 어디로 가야 합니까? (0) | 2023.03.06 |
---|---|
react this.state가 정의되지 않았습니까? (0) | 2023.03.06 |
프레스 가능과 터치 가능의 차이 (0) | 2023.02.11 |
jsx가 동작하지 않는다. (0) | 2023.02.11 |
jQuery AJAX 호출 로드 표시기 구현 (0) | 2023.02.11 |