我想使用不带类定义的改型使用jsonobject,结果为null。怎么样?
我有一个带有JSON响应的get查询:
[{"Kuota":"12"}]
这是我的代码获取数据JSONObject。
public void GetKuota(String Key) {
IBookingService iBookingService = APIClient.getClient().create(IBookingService.class);
Call<ResponseBody> call = iBookingService.getKuota(Key);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if(!response.isSuccessful()) {
JSONObject jsonObject;
try {
jsonObject = new JSONObject(response.body().toString());
// Log.d(jsonObject.getString("Kuota"));
datas =String.valueOf(jsonObject.getInt("Kuota"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
}
答案 0 :(得分:0)
建议:
创建一个模型类,例如 Kuota
public class Kuota {
public int Kuota;
}
然后像这样重写Retrofit回调。
iBookingService.getKuota(Key).enqueue(new Callback<List<Kuota>>() {
@Override
public void onResponse(Call<List<Kuota>> call, Response<List<Kuota>> response) {
if(response.code() == 200 && response.body() != null) {
try {
for(Kuota k: response.body()) {
Log.d("Kuota Value" , " " + k.kuota);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<List<Kuota>> call, Throwable t) {
}
});
将iBookingService数据持有者从ResponseBody替换为List
如果未添加,请在设置Retrofit实例时添加JSON序列化器。
new Retrofit.Builder()
.......
.addConverterFactory(GsonConverterFactory.create())
.build();
并添加依赖项
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'