2016-09-19 10 views
2

私は多くのネットワークコールを持つアプリケーションを開発しています。私はそれにretrofitを使用しています。リクエストごとにモデルクラスを作成しました。不要なモデルクラスを作成しないようにすることができます。レトロフィットでモデルを作成するのを避ける方法

+1

を、私は以下のdesctibeよう要求するために、あなたは、文字列でJSONを作成し、それを送ることができますか?はい、方法があります。 Gsonを使用せず、JSON文字列を自分で解析してください。 –

+0

サンプルコードを追加できますか? –

+0

、またはハッシュマップまたはハッシュマップの配列を常に解析する –

答えて

0

はい、不要なモデルクラスは避けることができます。

例:
モデルクラスが5つあり、Model_class1がメインモデルクラスであり、他の4つのサブモデルクラスを宣言する必要があるとします。上記のコードで

class Model_class1 
{ 
    @SerializedName("Model_class2") 
    @Expose 
    private Model_class2 model_class2; 

@SerializedName("Model_class3") 
    @Expose 
    private Model_class3 model_class3; 

@SerializedName("Model_class4") 
    @Expose 
private Model_class4 model_class4; 

@SerializedName("Model_class5") 
    @Expose 
private Model_class5 model_class5; 

} 

したい場合にのみModel_class2Model_class3はあなたがModel_class1残りの2つにのみモデル名を宣言しなければならないことを意味。宣言する必要はなく、これら2つのモデルクラスも作成する必要はありません。

0

はい、私は一度もリクエストを送信することはできますが、受信するためには一度も試していません。

使用JSONObjectまたはJSONArrayと@Body

try { 
     JSONObject obj = new JSONObject(); 
     obj.put("username", "username"); 
     obj.put("password", "password"); 
     RetrofitInterface.login(obj); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

として改造するためにそれらを渡すここにあなたの改造・インターフェース・クラスを使用すると、応答としてJsonElementを使用することができます受信するための

public interface RetrofitInterface{ 
    . 
    . 
    @POST(URL) 
    Call login(@Body JSONObject object); 
    . 
    . 
} 
1

です。

インタフェース

@POST("api/") 
    Call<JsonElement> request(@Body RequestBody body); 

要求::あなたはGsonモデルクラスを意味

RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), inputJsonString); 
    call.enqueue(new Callback<JsonElement>() { 
       @Override 
       public void onResponse(Call<JsonElement> call, Response<JsonElement> response) { 
        if(response.isSuccessful()){ 
         JsonElement jsonElement = response.body(); 
         if(jsonElement.isJsonObject()){ 
         //use any json deserializer to convert to your class. 
        } 
        else{ 
         System.out.println(response.message()); 
        } 
       } 
       @Override 
       public void onFailure(Call<JsonElement> call, Throwable t) { 
        System.out.println("Failed"); 
       } 
      }); 
関連する問題