2017-09-14 49 views
1

我收到以下錯誤消息,同時從Openfire的REST API讓用戶實體。 (我用包裹的Openfire RESTAPI端點我的API端點。)沒有串行發現類java.io.ByteArrayInputStream中

「錯誤」: 「內部服務器錯誤」, 「異常」: 「org.springframework.http.converter.HttpMessageNotWritableException」, 「消息「:」無法寫入JSON:未找到類java.io.ByteArrayInputStream中的串行器與沒有屬性發現創建BeanSerializer(避免異常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS);嵌套的例外是com.fasterxml.jackson.databind.JsonMappingException:否串行器找到類java.io.ByteArrayInputStream和沒有屬性發現(以避免異常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS)(通過參考鏈:com.mashape.unirest.http.HttpResponse [\「原始信體\」])來創建BeanSerializer」, 「path」:「/ usersInfo/user2」

代碼如下。

String host ="http://abdul01anpi01:9090" ; 
String userEndPoint = "/plugins/restapi/v1/users" ; 
String apiURL = host+userEndPoint ; 
HttpResponse<JsonNode> response =null; 

response = Unirest.get(apiURL +"/{username}").header("accept", "application/json").header("Content-Type", "application/json").routeParam("username",String.valueOf(username)).asJson(); 

響應的預期輸出如下。

{ 
    "username": "user2", 
    "name": "user2", 
    "properties": null 
} 

請注意,任何幫助表示讚賞。

+0

希望你傳遞一個routeParam用戶名不爲空? – cdaiga

+0

不,我通過用戶名 – abdul

+2

@Bean public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){ ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,FALSE); MappingJackson2HttpMessageConverter變換器= 新MappingJackson2HttpMessageConverter(映射器); 返回轉換器; } – abdul

回答

0

另一種方式來解決這個問題是忽略它有返回類型的ByteArrayInputStream的屬性,例如,你可以裝點這個類:

class Frodo { 
    private bytes[] value; 
    public Frodo(bytes[] value) { 
     this.value = value; 
    } 

    public ByteArrayInputStream getFoo() throws IOException { 
     return new ByteArrayInputStream(value()); 
    } 

    public void setFoo(ByteArrayInputStream streamData) { 
     // set value from streamData 
    } 
} 

這樣的:

@JsonIgnoreProperties(value = { "foo" }) 
class Frodo { 
    private bytes[] value; 
    public Frodo(bytes[] value) { 
     this.value = value; 
    } 

    public ByteArrayInputStream getFoo() throws IOException { 
     return new ByteArrayInputStream(value()); 
    } 

    public void setFoo(ByteArrayInputStream streamData) { 
     // set value from streamData 
    } 
} 

你也可以忽略多個屬性:@JsonIgnoreProperties(value = { "foo", "anotherValue" })