2016-07-14 72 views
0

我是新來的Android註釋,我有一個關於AA api.Here的REST客戶端實現多個困惑是我的代碼我使用:解析JSON響應REST的Android

@Rest(rootUrl = "http://something.com", converters = {MappingJackson2HttpMessageConverter.class}) 

public // if defined, the url will be added as a prefix to every request 
interface RESTClient extends RestClientHeaders { 
    @Post("/isec/api/user/login ") 
    @Accept(MediaType.APPLICATION_JSON) 
    void LoginUser(@Field String email,@Field String password,@Field String type); 
} 

和預期JSON的反應是:

{ 
"status": false 
"message": "Verify your account to continue" 
"verified": "n" 
"type": "STUDENT" 
"apikey": "4o0k8sg4g8ckkswskkowcog80gog4gso0g00kogo" 
} 

現在我的問題是:

1 - 在哪個變量我得到的迴應JSON

2 - 解析我的回覆JSON的最佳方式是什麼,因爲我在同一個URL的不同參數上得到了不同的響應,所以我無法創建類來處理響應?

3 - @Path,@field註釋的主要區別是什麼?

在此先感謝

+0

我建議使用名爲retrofit2的庫。它會簡化你的生活。不需要解析json響應,也不需要認真思考異步請求。 – faruk

+0

雖然搜索我見過很多人建議retrofit2,但也是老實說,我沒有發現這兩個庫之間的很大區別,但仍然可以給你容易理解,並遵循retrofit2的教程,所以我可以檢查? –

回答

0
@Rest(rootUrl = "http://something.com", converters = {MappingJackson2HttpMessageConverter.class}) 

public // if defined, the url will be added as a prefix to every request 
interface RESTClient extends RestClientHeaders { 
    @Post("/isec/api/user/login ") 
    @Accept(MediaType.APPLICATION_JSON) 
    YourResponseClass LoginUser(@Field String email,@Field String password,@Field String type); 
} 

的響應將被解析成你與傑克遜在這種情況下類。

@Path用於url變量,@Field用於表單輸入。第一個被替換爲URL,第二個被添加到請求主體中,作爲表單url編碼參數。請閱讀wiki,它有詳細的例子。

+0

你能給出任何關於'YourResponseClass'的例子,如果我必須創建這個類,那麼它的樣板文件w.r.t會給出響應,如果是的話,那麼我是否需要爲每種不同類型的響應創建新的響應類? –

+0

是的,有時候一些請求可以給出相同的響應json結構,但有時它不是。 – faruk

+0

這是一個非常糟糕的設計。然後你必須動態地處理響應。或者,也許你可以嘗試一個多態反序列化,如果它適合的話:http://wiki.fasterxml.com/JacksonPolymorphicDeserialization – WonderCsabo