Spring MVC Java 응용 프로그램에서 Jersey REST API를 사용하고 있습니다. JSON 처리를 위해 Jackson을 사용하고 있습니다. 일부 프로젝트의 일부 필드를 필터링하기 위해 Genson을 내 프로젝트에 추가했습니다. 그리고 저는 Genson 만 사용하려고하며 남은 것은 Jackson을 사용하고 싶습니다.JensBindingException이있는 Genson JsonBindingException : 형식을 java.lang.String으로 변환 할 수 없습니다.
Jersey가 클래스 경로 (Got to know from this link)에있을 때 Jersey가 Genson을 기본적으로 사용하도록 설정하여 Jersey REST API를 사용하는 동안 예외가 발생합니다.
다음은 웹 서비스에 연결에서 내 코드를하고 데이터를 얻을 내가
javax.ws.rs.WebApplicationException: com.owlike.genson.JsonBindingException: Could not deserialize to type class java.lang.String
at com.owlike.genson.ext.jaxrs.GensonJsonConverter.readFrom(GensonJsonConverter.java:130)
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:553)
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:506)
at com.myapp.WebHttpClient.connect(WebHttpClient.java:74)
at com.myapp.connection.connectors.WebConnector.getData(WebConnector.java:39)
at com.myapp.adapter.impl.SourceAdapter.getData(SourceAdapter.java:29)
at com.myapp.service.impl.WebServiceImpl.adapter(WebServiceImpl.java:174)
at com.myapp.service.impl.WebServiceImpl.connect(WebServiceImpl.java:107)
... 41 more
Caused by: com.owlike.genson.JsonBindingException: Could not deserialize to type class java.lang.String
at com.owlike.genson.Genson.deserialize(Genson.java:398)
at com.owlike.genson.ext.jaxrs.GensonJsonConverter.readFrom(GensonJsonConverter.java:128)
... 48 more
Caused by: com.owlike.genson.stream.JsonStreamException: Readen value can not be converted to String
at com.owlike.genson.stream.JsonReader.valueAsString(JsonReader.java:200)
at com.owlike.genson.convert.DefaultConverters$StringConverter.deserialize(DefaultConverters.java:364)
at com.owlike.genson.convert.DefaultConverters$StringConverter.deserialize(DefaultConverters.java:351)
at com.owlike.genson.convert.NullConverter$NullConverterWrapper.deserialize(NullConverter.java:56)
at com.owlike.genson.Genson.deserialize(Genson.java:396)
... 49 more
선 (74)는 stringResponse = response.getEntity(String.class);
을 말한다 다음과 같은 예외를 받고 있어요
public String connect() throws Exception {
Client client = Client.create();
try {
String auth = new String(Base64.encode(userName + COLON + password));
WebResource webResource = client
.resource(webServiceUrl);
ClientResponse response = webResource
.header(AUTHORIZATION, BASIC + auth).type(APPLICATION_JSON)
.accept(APPLICATION_JSON).get(ClientResponse.class);
//code to check response status code.
stringResponse = response.getEntity(String.class);
} catch (ClientHandlerException e) {
throw new Exception("Not a Valid Url.");
} finally {
client.destroy();
}
return stringResponse;
}
잭슨
사용하여 문자열로 변환합니다.저지에서 Genson을 비활성화하는 방법 또는 Genson을 사용하여이 문제를 해결하려면 어떻게합니까?
감사
항상 genson을 사용하는 것이 좋으면 응답을 문자열로 보내는 대신 원하는 유형으로 직접 이동할 수 있습니다. – eugen
String으로 원합니다. 그것을 어떻게 얻을 수 있습니까? – iCode
여전히 Jax-RS에서 Genson을 비활성화해야하는 경우 새 릴리스에이 메커니즘이 포함되어 있습니다. 내 업데이트를 참조하십시오. – eugen