2017-06-23 90 views
1
private <T> T[] getObjects(Class<T> tClass, String version) { 
    String subUrl = "/versions/" + version; 
    return ClientBuilder.newClient() 
         .target(url) 
         .request() 
         .get(new GenericType<T[]>(tClass) {}); 
} 

這裏JSON對象ProcessingException:org.codehaus.jackson.map.JsonMappingException:無法反序列X的實例進行START_ARRAY令牌

[ 
    { 
     "id":1, 
     "name":"test", 
     "country":"USA" 
    }, 
    { 
     "id":2, 
     "name":"test_1", 
     "country":"cameroon" 
    } 
] 

的getObjects方法的調用:

X[] x = getObjects(X.class, currentVersionName); 

我得到這個例外:

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of X out of START_ARRAY token 
at [Source: [email protected]; line: 1, column: 1] 
    at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163) 
    at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:219) 
    at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:212) 
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromArray(BeanDeserializer.java:875) 
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:597) 
    at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2704) 
    at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1315) 
    at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419) 
    at org.jboss.resteasy.core.interception.jaxrs.AbstractReaderInterceptorContext.readFrom(AbstractReaderInterceptorContext.java:66) 
    at org.jboss.resteasy.core.interception.jaxrs.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:56) 
    at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:248) 
    ... 38 more 

我使用這些依賴關係:

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-client</artifactId> 
    <version>3.1.2.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jackson-provider</artifactId> 
    <version>3.1.2.Final</version> 
</dependency> 
+0

也許有已經夠了RestEasy的/傑克遜專家,但我會問:做底部有異常痕跡? (從最後一個「引起」到底部) –

回答

1

嘗試改變:

private <T> T[] getObjects(Class<T> tClass, String version) 

private <T> T[] getObjects(Class<T[]> tClass, String version) 

和呼叫方將是

X[] x = getObjects(X[].class, currentVersionName); 
+0

它工作正常;-) – emoleumassi

相關問題