简体   繁体   中英

Java Bean Return Value is Null

I'm getting a problem with the return value after the post request, the response string contains the requested JSON text but the dataBean is null ??

   @Override
    public wDataBean doInBackground(Void... params) {
           wDataBean dataBean = new wDataBean();


        try {

            Response response = client.newCall(request).execute();
            String responseString = response.body().string();
            JSONObject jsonObject = new JSONObject(responseString);
            Gson gson = new Gson();

            dataBean = gson.fromJson(jsonObject.toString(), wDataBean.class);

            }
        catch (final IOException e)
        {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                   Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
                }
            });
        } catch (JSONException e) {
            e.printStackTrace();
            Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
        }

        return dataBean;
    }

This is a sample of the response:

  { "IsOK":true,
    "Response":"Logged in successfully",
    "MyArray":{ "user":"35",
                "email":"email@domain.com",
                "img":"https:\/\/www.mywebsite.com\/uploads\/136_image.png",
                "fname":"First Name",
                "lname":"Last Name",
                "myToken":
                    {   
                        "auth":"xyzxyzyxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz",
                        "expiry":"1980-01-01 00:00:00"
                    }
              },
     "myToken":{}
   }

wDataBean.java

public class wDataBean {

private Main1 main;

public Main1 getMain() {return main;}

public void setMain(Main1 main) {this.main = main;}

class Main1 {

    boolean IsOK;
    String Response;
    JSONArray MyArray;
    int user;
    String email;
    String img;
    String fname;
    String lname;
    JSONArray myToken;
    String auth;
    Date expiry;

    public boolean isOK() {return isOK();}
    public int getUser() {return user;}
    public JSONArray getMyArray() {return MyArray;}
    public String getEmail() {return email;}
    public String getImg() {return img;}
    public String getResponse() {return Response;}
    public Date getExpiry() {return expiry;}
    public JSONArray getMyToken() {return myToken;}
    public String getAuth() {return auth;}
    public String getFname() {return fname;}
    public String getLname() {return lname;}
    public void setAuth(String auth) {this.auth = auth;}
    public void setEmail(String email) {this.email = email;}
    public void setExpiry(Date expiry) {this.expiry = expiry;}
    public void setFname(String fname) {this.fname = fname;}
    public void setImg(String img) {this.img = img;}
    public void setLname(String lname) {this.lname = lname;}
    public void setMyArray(JSONArray myArray) {MyArray = myArray;}
    public void setMyToken(JSONArray myToken) {this.myToken = myToken;}
    public void setOK(boolean OK) {IsOK = OK;}
    public void setResponse(String response) { Response = response;}
    public void setUser(int user) { this.user = user;}
  }

}

The goal is to get "auth" and "expiry" from myToken

This should be your bean class -

 public class WDataBean {

    @SerializedName("IsOK")
    @Expose
    private Boolean isOK;
    @SerializedName("Response")
    @Expose
    private String response;
    @SerializedName("MyArray")
    @Expose
    private MyArray myArray;
    @SerializedName("myToken")
    @Expose
    private MyToken_ myToken;

    /**
    * 
    * @return
    * The isOK
    */
    public Boolean getIsOK() {
    return isOK;
    }

    /**
    * 
    * @param isOK
    * The IsOK
    */
    public void setIsOK(Boolean isOK) {
    this.isOK = isOK;
    }

    /**
    * 
    * @return
    * The response
    */
    public String getResponse() {
    return response;
    }

    /**
    * 
    * @param response
    * The Response
    */
    public void setResponse(String response) {
    this.response = response;
    }

    /**
    * 
    * @return
    * The myArray
    */
    public MyArray getMyArray() {
    return myArray;
    }

    /**
    * 
    * @param myArray
    * The MyArray
    */
    public void setMyArray(MyArray myArray) {
    this.myArray = myArray;
    }

    /**
    * 
    * @return
    * The myToken
    */
    public MyToken_ getMyToken() {
    return myToken;
    }

    /**
    * 
    * @param myToken
    * The myToken
    */
    public void setMyToken(MyToken_ myToken) {
    this.myToken = myToken;
    }

public class MyToken_ {


}
public class MyToken {

@SerializedName("auth")
@Expose
private String auth;
@SerializedName("expiry")
@Expose
private String expiry;

/**
* 
* @return
* The auth
*/
public String getAuth() {
return auth;
}

/**
* 
* @param auth
* The auth
*/
public void setAuth(String auth) {
this.auth = auth;
}

/**
* 
* @return
* The expiry
*/
public String getExpiry() {
return expiry;
}

/**
* 
* @param expiry
* The expiry
*/
public void setExpiry(String expiry) {
this.expiry = expiry;
}

}
public class MyArray {

@SerializedName("user")
@Expose
private String user;
@SerializedName("email")
@Expose
private String email;
@SerializedName("img")
@Expose
private String img;
@SerializedName("fname")
@Expose
private String fname;
@SerializedName("lname")
@Expose
private String lname;
@SerializedName("myToken")
@Expose
private MyToken myToken;

/**
* 
* @return
* The user
*/
public String getUser() {
return user;
}

/**
* 
* @param user
* The user
*/
public void setUser(String user) {
this.user = user;
}

/**
* 
* @return
* The email
*/
public String getEmail() {
return email;
}

/**
* 
* @param email
* The email
*/
public void setEmail(String email) {
this.email = email;
}

/**
* 
* @return
* The img
*/
public String getImg() {
return img;
}

/**
* 
* @param img
* The img
*/
public void setImg(String img) {
this.img = img;
}

/**
* 
* @return
* The fname
*/
public String getFname() {
return fname;
}

/**
* 
* @param fname
* The fname
*/
public void setFname(String fname) {
this.fname = fname;
}

/**
* 
* @return
* The lname
*/
public String getLname() {
return lname;
}

/**
* 
* @param lname
* The lname
*/
public void setLname(String lname) {
this.lname = lname;
}

/**
* 
* @return
* The myToken
*/
public MyToken getMyToken() {
return myToken;
}

/**
* 
* @param myToken
* The myToken
*/
public void setMyToken(MyToken myToken) {
this.myToken = myToken;
}

}
    }

Can you show me the class wDataBean?

But I venture to say that this can solve

Gson gson = new GsonBuilder().setDateFormat("yyyy-mm-dd HH:mm:ss").create();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM