2016-07-14 9 views
0

私はアンドロイドの注釈に新しいです、私はAA api.HereのRESTクライアントの実装に関する複数の混乱を持っている私が使用しています私のコードです:解析JSONレスポンスRESTアンドロイド

@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 - 私は同じURLの異なるパラメータで異なる応答を得るので、私の応答を解析するための最良の方法は何ですか?回答を扱うクラスを作成できません。

3 - @Path@fieldの主な違いは何ですか?事前に

おかげ

+0

retrofit2というライブラリを使用することをお勧めします。あなたの人生をシンプルにします。 jsonレスポンスを解析する必要はなく、非同期リクエストについて懸命に考える必要はありません。 – faruk

+0

私はretrofit2を提案している人の多くを見てきましたが、あまりにも正直ですが、これらの2つのライブラリの違いはあまりありませんでしたが、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に置換され、2番目のものは要求の本文にフォームのURLエンコードされたパラメータとして追加されます。 wikiを読んでください、詳細な例があります。

+0

あなたは 'YourResponseClass'に関して何か例を挙げることができますか?もし私がこのクラスを作成しなければならない場合は、ボイラープレートw.r.tが与えられたレスポンスになります。そうなら、レスポンスの種類ごとに新しいレスポンスクラスを作成する必要がありますか? –

+0

はい、場合によっては、いくつかの要求が同じ応答json構造を与えることがありますが、時にはそうではありません。 – faruk

+0

それはかなり悪いデザインです。次に、応答を動的に処理する必要があります。場合によっては、多態的な直列化を試みることもできます。http://wiki.fasterxml.com/JacksonPolymorphicDeserialization – WonderCsabo

関連する問題