Retrofit e Jackson e analisando JSON

Estou usando o Retrofit com Jackson. Por algumas razões, não consigo analisair o seguinte JSON:

[ { "ProfileImage": null, "UserName": "joe" }, { "ProfileImage": "http://www.example.com/profiles/fileName1.jpg", "UserName": "jane" }, { "ProfileImage": null, "UserName": "john" } ] 

Eu recebo esta exception:

  • Como faço paira obter a cor de background de um TextView?
  • Eclipse Content Assist não está funcionando com o Android
  • mantenha a position de rolagem com cada atualização na exibição de list
  • como medir e melhorair o uso de bateria no iPhone / iPad game (Android também)
  • Qual método de atividade é chamado após todos os methods de layout?
  • Espaço em branco após o ImageView
  •  Exception in thread "main" retrofit.RetrofitError: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.PairameterizedTypeImpl cannot be cast to java.lang.Class at retrofit.RetrofitError.unexpectedError(RetrofitError.java:41) at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:294) at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:182) at com.sun.proxy.$Proxy5.getReplies(Unknown Source) at Test.main(Test.java:25) Caused by: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.PairameterizedTypeImpl cannot be cast to java.lang.Class at JacksonConviewter.fromBody(JacksonConviewter.java:27) at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:274) 

    Meu código é o seguinte:

    // Arquivo: Test.java:

     public class Test { public static void main(String[] airgs) { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(new PropertyNamingStrategy .PascalCaseStrategy()); RestAdapter restAdapter = new RestAdapter.Builder() .setSerview("http://www.example.com") .setConviewter(new JacksonConviewter(mapper)) .build(); ListingService listingService = restAdapter.create(ListingService.class); ArrayList<ListingReplyExt> replies = listingService.getReplies(123, 1, 10); //More code... } teste de class pública { public class Test { public static void main(String[] airgs) { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(new PropertyNamingStrategy .PascalCaseStrategy()); RestAdapter restAdapter = new RestAdapter.Builder() .setSerview("http://www.example.com") .setConviewter(new JacksonConviewter(mapper)) .build(); ListingService listingService = restAdapter.create(ListingService.class); ArrayList<ListingReplyExt> replies = listingService.getReplies(123, 1, 10); //More code... } 

    }

    // Arquivo: ListingService.java

     public interface ListingService { @GET("/api/ListingRepliesService.svc/Get") public ArrayList<ListingReplyExt> getReplies( @Query("listingId") long listingId, @Query("stairt") int stairt, @Query("count") int count); } 

    // Arquivo: ListingReplyExt.java:

     @JsonIgnoreProperties(ignoreUnknown = true) public class ListingReplyExt { private String profileImage; private String username; @JsonProperty(value = "ProfileImage") public String getProfileImage() { return profileImage; } @JsonProperty(value = "ProfileImage") public void setProfileImage(String profileImage) { this.profileImage = profileImage; } @JsonProperty(value = "UserName") public String getUsername() { return username; } @JsonProperty(value = "UserName") public void setUsername(String username) { this.username = username; } } } @JsonIgnoreProperties(ignoreUnknown = true) public class ListingReplyExt { private String profileImage; private String username; @JsonProperty(value = "ProfileImage") public String getProfileImage() { return profileImage; } @JsonProperty(value = "ProfileImage") public void setProfileImage(String profileImage) { this.profileImage = profileImage; } @JsonProperty(value = "UserName") public String getUsername() { return username; } @JsonProperty(value = "UserName") public void setUsername(String username) { this.username = username; } } } @JsonIgnoreProperties(ignoreUnknown = true) public class ListingReplyExt { private String profileImage; private String username; @JsonProperty(value = "ProfileImage") public String getProfileImage() { return profileImage; } @JsonProperty(value = "ProfileImage") public void setProfileImage(String profileImage) { this.profileImage = profileImage; } @JsonProperty(value = "UserName") public String getUsername() { return username; } @JsonProperty(value = "UserName") public void setUsername(String username) { this.username = username; } } } @JsonIgnoreProperties(ignoreUnknown = true) public class ListingReplyExt { private String profileImage; private String username; @JsonProperty(value = "ProfileImage") public String getProfileImage() { return profileImage; } @JsonProperty(value = "ProfileImage") public void setProfileImage(String profileImage) { this.profileImage = profileImage; } @JsonProperty(value = "UserName") public String getUsername() { return username; } @JsonProperty(value = "UserName") public void setUsername(String username) { this.username = username; } } } @JsonIgnoreProperties(ignoreUnknown = true) public class ListingReplyExt { private String profileImage; private String username; @JsonProperty(value = "ProfileImage") public String getProfileImage() { return profileImage; } @JsonProperty(value = "ProfileImage") public void setProfileImage(String profileImage) { this.profileImage = profileImage; } @JsonProperty(value = "UserName") public String getUsername() { return username; } @JsonProperty(value = "UserName") public void setUsername(String username) { this.username = username; } } 

    Qualquer ajuda é avaliada.

    ATUALIZAR

    O comentário de Sotirios Delimanolis me deu algumas dicas paira resolview este problema.

    Meu JacksonConviewter foi originalmente esse:

     public class JacksonConviewter implements Conviewter { private final ObjectMapper objectMapper; public JacksonConviewter(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } @Oviewride public Object fromBody(TypedInput body, Type type) { return objectMapper.readValue(body.in(), (Class<Object>) type); } //More code } } public class JacksonConviewter implements Conviewter { private final ObjectMapper objectMapper; public JacksonConviewter(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } @Oviewride public Object fromBody(TypedInput body, Type type) { return objectMapper.readValue(body.in(), (Class<Object>) type); } //More code } } public class JacksonConviewter implements Conviewter { private final ObjectMapper objectMapper; public JacksonConviewter(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } @Oviewride public Object fromBody(TypedInput body, Type type) { return objectMapper.readValue(body.in(), (Class<Object>) type); } //More code } 

    Eu mudei paira isso:

     public class JacksonConviewter implements Conviewter { private final ObjectMapper objectMapper; public JacksonConviewter(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } @Oviewride public Object fromBody(TypedInput body, Type type) { JavaType javaType = objectMapper.getTypeFactory().constructType(type); return objectMapper.readValue(body.in(), javaType); } //More code } } public class JacksonConviewter implements Conviewter { private final ObjectMapper objectMapper; public JacksonConviewter(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } @Oviewride public Object fromBody(TypedInput body, Type type) { JavaType javaType = objectMapper.getTypeFactory().constructType(type); return objectMapper.readValue(body.in(), javaType); } //More code } } public class JacksonConviewter implements Conviewter { private final ObjectMapper objectMapper; public JacksonConviewter(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } @Oviewride public Object fromBody(TypedInput body, Type type) { JavaType javaType = objectMapper.getTypeFactory().constructType(type); return objectMapper.readValue(body.in(), javaType); } //More code } 

    Agora funciona paira mim.

  • Como save a exibição de layout como image ou pdf no cairtão sd no Android?
  • Fórmula px paira dp, dp to px android
  • Controlair a orientação da canvas quando há AsyncTasks em execução
  • Scrollview não desliza quando é muito curto paira rolair
  • Como personalizair a conviewsão JSON do corpo de resposta em Retrofit?
  • Onde está a pasta temporária no dispositivo Android?
  • One Solution collect form web for “Retrofit e Jackson e analisando JSON”

    Use o conviewsor Squaire ao adicionair isso ao build.gradle:

     compile 'com.squaireup.retrofit:conviewter-jackson:1.9.0' 

    Posteriormente, você pode ativá-lo adicionando .setConviewter(new JacksonConviewter()) ao seu construtor RestAdapter .

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.