2014-12-24 6 views
0

Retrofit을 사용하여 WebAPI REST 서비스에서 일부 데이터를 가져옵니다. 그러나 내 모델에 byte []가 포함되어있어 예외가 발생합니다.Square Retrofit : 예외 변환 바이트 []

내가받을 예외는 다음과 같습니다 : 내 모델은 사진이라는 바이트 []을 가지고 있기 때문에

Caused by: retrofit.converter.ConversionException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 122 path $.Photo 

이 예외가 나타납니다.

내 모델 :

public class Artists { 
    private long ID; 
    private String Firstname; 
    private String Lastname; 
    private String Description; 
    private String Countrycode; 
    private byte[] Photo; 
    private java.util.Date Born; 
    private java.util.Date Death; 
    private java.util.Date Edited; 

내 REST API 자바 인터페이스 :

public interface ArtistRestService { 
    @GET("/artist/{id}") 
    Artists getArtist(@Path("id") long artistID); 

    @GET("/artist") 
    List<IdEditedRestObj> getArtists(); 
} 

내가 retrofit.mime.TypedByteArray를 사용할 수 있다는 것을 알고 있지만 나는 또한 GreenDAO에게 ORM 매퍼를 사용하고 난 그렇지 스택 전체를 리팩토링하고 싶습니다.

그 예외가 더 걸릴 장소를하지 않습니다 그래서 내가 어떻게 든 들어오는 JSON을 구문 분석 할 수있는 간단한 해결 방법/솔루션이 있습니까? 발견

답변

0

솔루션 : 이 https://github.com/square/retrofit/blob/master/retrofit-converters/jackson/src/main/java/retrofit/converter/JacksonConverter.java

public RestService(String url){ 
     restAdapter = new RestAdapter.Builder() 
       .setClient(new OkClient(getClient())) 
       .setEndpoint(url) 
       .setConverter(new JacksonConverter()) 
       .setErrorHandler(new RetrofitErrorHandler()) 
       .setLogLevel(RestAdapter.LogLevel.HEADERS_AND_ARGS) 
       .build(); 
    } 

모든 사용은

+0

이 답변을 수락 들으, 지금은 잘 작동합니다. :) –