2017-09-18 89 views
1

我想從JSON響應中獲取類實例。我的JSON響應如下所示:enter image description here返回null的json對象的類實例字段

我的類看起來例如看起來是這樣的:

private String brandName; 
    @OneToMany(targetEntity=Store.class) 
    private List<Store> stores; 
    private String currency; 
    private String title; 



    public Product(){} 

    public String getBrandName() { 
     return brandName; 
    } 

    public void setBrandName(String brandName) { 
     this.brandName = brandName; 
    } 


    @OneToMany(targetEntity=Store.class) 
    public List<Store> getStores() { 
     return stores; 
    } 
    @OneToMany(targetEntity=Store.class) 
    public void setStores(List<Store> stores) { 
     this.stores = stores; 
    } 


    public String getCurrency() { 
     return currency; 
    } 

    public void setCurrency(String currency) { 
     this.currency = currency; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

,所以我試圖創建JSON類與谷歌GSON API這樣的:

private Gson gson = new Gson(); 
... 
product = this.gson.fromJson(this.http.get(url), Product.class); 

但是我從gson api得到一個類後,我發現我的所有類字段都是空的。我也試圖將@JsonProperty添加到我的實體字段,但它不起作用。並試圖獲得ObjectMapper的實例,但結果爲空。我做錯了什麼?

+0

調試過「this.http.get(url)」,它返回的東西不爲null?我的意思是你確定你的屏幕截圖上顯示的結構相同嗎? – nineunderground

+0

@nineunderground是的,「this.http.get(url)」沒有返回null,因爲帖子上的圖片是這個方法的結果。我沒有相同的結構,因爲我刪除了一些字段,因爲我不需要它們。我認爲這是必須的。或者我需要與json中相同的結構,而不是刪除不需要的字段? –

+0

你能打印那個JSON字符串嗎? – nineunderground

回答

1

正如我雖然這不是你的類的有效實例。這是一個HTTP響應。 如果您看到您的項目在值「產品」之後開始,它依然是數組,則即使該響應僅返回一個。 所以,你只需要得到該項目的那一部分。

因此,嘗試創建一個完整的JSON表示與以下:

JSONObject myObject = new JSONObject(result); 

,然後讓只有...的getResult()我猜。最後你將它傳遞給Gson方法

+0

問題出在json的結構中。所以你是對的,我只是需要得到JSON的一部分。 thnks –