Я использую модификацию 2 в android. Моё приложение имеет значение sh, когда одно из значений возвращает нулевой ключ , например «TOTAL_EXPENSE_AMOUNT»: null . Мой json похож на ниже:
[{
"YEAR": "2019",
"TOTAL_AMOUNT": "1580292",
"TOTAL_EXPENSE_AMOUNT": "1740857",
"TOTAL_BALANCE": "-160565"
},
{
"YEAR": "2018",
"TOTAL_AMOUNT": "144000",
"TOTAL_EXPENSE_AMOUNT": null,
"TOTAL_BALANCE": null
} ]
1. . Мой модернизированный интерфейс ниже:
public interface Api {
@POST("User/yearly_balance_expense_list.php")
Call<List<Balance_Data_Model>> getBalanceList();
}
2. Мой API-интерфейс ниже:
public class ApiService {
public static final String BASE_URL = IPConfigure.getIP();
Api api = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build().create(Api.class);
public Call<List<Balance_Data_Model>> getBalanceList(){
return api.getBalanceList();
}
}
** 3. ** Мой файл projo ниже:
public class Balance_Data_Model {
@SerializedName("YEAR")
@Expose
public String year = "";
@SerializedName("TOTAL_AMOUNT")
@Expose
public String total_amount = "";
@SerializedName("TOTAL_EXPENSE_AMOUNT")
@Expose
public String total_expense = "";
@SerializedName("TOTAL_BALANCE")
@Expose
public String total_balance = "";
//getter/setter here
}
** 4. ** Я использовал приведенный ниже код из действия
ApiService apiService = new ApiService();
Call<List<Balance_Data_Model>> call = apiService.getBalanceList();
call.enqueue(new Callback<List<Balance_Data_Model>>() {
@Override
public void onResponse(Call<List<Balance_Data_Model>> list, Response<List<Balance_Data_Model>> response) {
Log.e("success--->","success");
for(Balance_Data_Model m : response.body()){
Log.e("total_expense--->",m.total_expense);
Log.e("total_balance--->",m.total_balance);
}
}
@Override
public void onFailure(Call<List<Balance_Data_Model>> call, Throwable t) {
Log.e("failure--->",t.toString());
}
});
Первый л oop все нормально. когда total_balcne равен нулю, приложение имеет значение sh. Пожалуйста, помогите мне