在正常JSONObject jsonResponse
中,我只使用boolean success = jsonResponse.getBoolean("success");
。现在,我需要使用Retrofit库。
我知道响应是GSON格式的。这就是为什么我很难弄清楚如何处理$response["success"]
文件中的php
。
我试过了:
call.enqueue(new Callback<User_Account_Model>() {
@Override
public void onResponse(Call<User_Account_Model> call, Response<User_Account_Model> response) {
try {
JSONObject jsonResponse = new JSONObject(new Gson().toJson(response));
boolean success = jsonResponse.getBoolean("success");
Toast.makeText(MainActivity.this,String.valueOf(success),Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
但try and catch
内的内容似乎没有被执行。没有Toast消息显示。我的方法是正确的,只是遗漏了某些东西,或者它完全错了?
答案 0 :(得分:0)
在User_Account_Model
中为success
添加密钥
public class User_Account_Model{
@Expose
private boolean success;
// Add Getter and setter for **success**
}
现在在onResponse
方法中添加
try {
String json =response.body().string();
JSONObject jsonResponse = new JSONObject(json);
boolean success = jsonResponse.getBoolean("success");
Toast.makeText(MainActivity.this,String.valueOf(success),Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
创建一个只有一个布尔值的类
public class MyResponse{
@SerializedName("success")
private boolean success;
public boolean getSuccess(){
return success;
}
public void setSuccess(boolean _success){
success = _success
}
}
在enqueue方法中使用此类。
call.enqueue(new Callback<MyResponse>() {
@Override
public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {
try {
int statusCode = response.code();
Log.d("Response Code: ", "status Code: " + statusCode);
if (response.isSuccessful()){
MyResponse mResponse = response.body();
}
} catch (JSONException e) {
e.printStackTrace();
}
如果您的响应只包含一个节点“成功”,那么它将起作用。