2017-03-16 31 views
0

我需要从Json服务器下载数据。从端点JSON的样子说:从改装中获取Gson列表给我NPE

我从POJO创建Java类:

-Photo 
-ProductsResponse 
-ResultProductResponse 
-SelectedVariant 
-Variant 

这里是重要的类:

public class ProductsResponse { 

    @SerializedName("resultProductResponse") 
    @Expose 
    private List<ResultProductResponse> resultProductResponse = null; 
    @SerializedName("id") 
    @Expose 
    private String id; 
    @SerializedName("jsonrpc") 
    @Expose 
    private String jsonrpc; 

    public List<ResultProductResponse> getResultProductResponse() { 
     return resultProductResponse; 
    } 

    public void setResultProductResponse(List<ResultProductResponse> resultProductResponse) { 
     this.resultProductResponse = resultProductResponse; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getJsonrpc() { 
     return jsonrpc; 
    } 

    public void setJsonrpc(String jsonrpc) { 
     this.jsonrpc = jsonrpc; 
    } 

} 

和:

public class ResultProductResponse { 

    @SerializedName("description") 
    @Expose 
    private String description; 
    @SerializedName("base_price") 
    @Expose 
    private Double basePrice; 
    @SerializedName("variants") 
    @Expose 
    private List<Variant> variants = null; 
    @SerializedName("index_id") 
    @Expose 
    private Integer indexId; 
    @SerializedName("name") 
    @Expose 
    private String name; 
    @SerializedName("selected_variants") 
    @Expose 
    private List<SelectedVariant> selectedVariants = null; 
    @SerializedName("photo") 
    @Expose 
    private Photo photo; 
    @SerializedName("price") 
    @Expose 
    private Double price; 
    @SerializedName("id") 
    @Expose 
    private Integer id; 
    @SerializedName("unit") 
    @Expose 
    private String unit; 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public Double getBasePrice() { 
     return basePrice; 
    } 

    public void setBasePrice(Double basePrice) { 
     this.basePrice = basePrice; 
    } 

    public List<Variant> getVariants() { 
     return variants; 
    } 

    public void setVariants(List<Variant> variants) { 
     this.variants = variants; 
    } 

    public Integer getIndexId() { 
     return indexId; 
    } 

    public void setIndexId(Integer indexId) { 
     this.indexId = indexId; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public List<SelectedVariant> getSelectedVariants() { 
     return selectedVariants; 
    } 

    public void setSelectedVariants(List<SelectedVariant> selectedVariants) { 
     this.selectedVariants = selectedVariants; 
    } 

    public Photo getPhoto() { 
     return photo; 
    } 

    public void setPhoto(Photo photo) { 
     this.photo = photo; 
    } 

    public Double getPrice() { 
     return price; 
    } 

    public void setPrice(Double price) { 
     this.price = price; 
    } 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getUnit() { 
     return unit; 
    } 

    public void setUnit(String unit) { 
     this.unit = unit; 
    } 

} 

这我如何管理回复

apiInterface.getProducts(productsQuery).enqueue(new Callback<ProductsResponse>() { 
      @Override 
      public void onResponse(Call<ProductsResponse> call, Response<ProductsResponse> response) { 
       if (response.isSuccessful()) { 
        getProductsResponse(response); 
       } 
      } 

这里是无效getProductsResponse

void getProductsResponse(Response<ProductsResponse> response) { 
     productsResponse = response.body(); 
     Log.i("TAG", productsResponse.getId()); 

     List<ResultProductResponse> resultList = productsResponse.getResultProductResponse(); 

     Log.i("TAG", resultList.size() + ""); 
    } 

当我试图检查什么是resultList我得到NullPointerError大小。 从该列表中,我只需要获得“名称”值。你能告诉我我做错了什么吗? 问候:)从检查什么体内response.body(里面

回答

1

变化

@SerializedName("resultProductResponse") 

@SerializedName("result") 

因为您的回复中没有resultProductResponse

1

开始) 断点添加到该行:getProductsResponse(响应),看看原体

+0

这应该是一个评论,而不是(接受)的答案... –

+0

我想发表评论,但没有足够的声誉。你解决了你的问题吗? – Max