2015-06-01 23 views
0

0123'中有沒有簡單的方法可以自動將傳遞的對象轉換爲JSON在Android中將POJO轉換爲JSON改裝

這是我改造接口:

@FormUrlEncoded 
@POST("/places/name") 
void getPlacesByName(@Field("name") String name, 
        @Field("city") String city, 
        @Field("tags") Tags tags, 
        Callback<PlaceResponse> callback); 

起初我想,如果我通過Tags對象時,它會自動轉換爲JSON,但在現實的要求是這樣的: name=pubs&city=London&tags=com.app.database.model.Tags%4052aa38a8

是有什麼簡單的方法可以將POJO轉換成Retrofit中的JSON

+1

看看這個答案http://stackoverflow.com/questions/21398598/how-to-post-raw-whole-json-in-the-body-of-a-retrofit-request。您需要定義一個@Body參數併爲其提供一個POJO。 –

+0

我試過,但如果我使用'@ Body',我會得到這個錯誤'@Body參數不能與表單或多部分編碼一起使用' –

+0

如果你使用@Body,你應該刪除FormUrlEncoded註解Retrofit將做休息。 –

回答

1

由於你正在使用的@URLEncoded並傳遞參數@Field創建一個帶參數的URL 。

這裏是解決方案:

@POST("/places/name") 
void getPlacesByName(@Body RequestObject req, Callback<PlaceResponse> callback); 

Additionaly,我會建議使用@GET爲檢索對象。 @POST用於創建對象,@PUT用於更新。雖然這沒有錯,但它作爲recomendation依從RESTful兼容。