我正在开发一个具有大量网络调用的应用程序,我正在使用它的改造。对于每个请求我创建了模型类,这导致了大量的模型类。所以有什么办法可以避免创建不必要的模型类。
答案 0 :(得分:1)
对于接收,您可以使用JsonElement
作为回复。对于请求,您可以在字符串中创建json并将其发送到下面的desctibe:
<强>接口强>
@POST("api/")
Call<JsonElement> request(@Body RequestBody body);
请求:强>
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");
}
});
答案 1 :(得分: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_class2
和Model_class3
,则表示您必须仅在Model_class1
中声明这些模型名称,其余两个。无需声明也不需要创建这两个模型类。
答案 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();
}
这是您的改造界面类
public interface RetrofitInterface{
.
.
@POST(URL)
Call login(@Body JSONObject object);
.
.
}