2015-06-12 187 views
1

我向API發送請求並使用GSON將其轉換爲對象。GSON將字符串值轉換爲空

然後我通過一個Bundle傳遞它並將其作爲JSONString傳遞。

的問題是,之前我通過它通過捆綁的價值看起來不錯,但是當我收到包在接下來的活動值則Null

什麼,似乎這裏是什麼問題?我在猜測GSON在分析信息時遇到了一些問題。

這是我看到的字符串鍵之前我運行它通過捆綁。

http://XXXXXXXX.XXXXXX.com/%7B%7BSIZE%7D%7D-290x116.jpg

這是我看到後,我通過它通過捆綁

http://XXXXXXXX.XXXXXX.com/null

我用下面的代碼通過捆綁來傳遞:

Bundle bundle = new Bundle(); 
     Gson gson = new Gson(); 
     bundle.putString("my_model", gson.toJson(searchResult, ModelClass.class)); 
     i.putExtras(bundle); 
     startActivity(i); 

這是我使用的JSON轉換回對象的代碼:

Bundle bundle = getIntent().getExtras(); 
    if (bundle != null) { 
     String myModelJSON = bundle.getString("my_model"); 
     Gson gson = new Gson(); 
     mMyModel = gson.fromJson(myModelJSON, MyModel.class);= 
    } 

通知空末

我應該如何去修復呢?如果什麼都不能解決,我正在考慮使用Parcelable

EDIT:使用其餘客戶端應用程序

響應形式API:

「IMAGE_PATH」:「/上傳/圖像/ image02-%7B%7BSIZE%7D%7D-290x116。 jpg「

+0

嘗試在你的包中加入一個測試變量,如名稱「test」,值「abc」。確保你在另一端獲得它。另外,請檢查myModelJsonString以確保它包含您的期望。 myModel還有哪些其他方法可用?嘗試訪問他們,看看你得到什麼。 –

+0

我已經試過這個,它工作正常。其他方法很好,比如'getName();' – AndyRoid

+0

啊,我之前看到的只是「null」。也許它是由「%」符號引起的某種編碼問題?什麼是字符串鍵?它是你編碼的對象的一部分嗎?或者是Gson API的一部分?我不認爲這是訪問捆綁包中字符串的關鍵,它是「my_model」... –

回答

1

問題似乎是,對象我通過包含對象列表的捆綁包本身,似乎GSON有問題轉換回它的POJO對象,所以我只是抓住編輯列表,並通過這些,而不是像這樣:

bundle.putString("list", gson.toJson(myModelObject.getList())); 

然後在接下來的活動我抓住列表,像這樣:

Gson gson = new Gson(); 

// Get List 
Type typeEntityListObject = new TypeToken<List<ListObject>>(){}.getType(); 
mList = gson.fromJson(bundle.getString("list"), typeEntityListObject); 

現在不返回Null了,但因爲上面有人指出,該API正在返回一個錯誤的字符串的路徑,至少東西在我的工作很好。