Reputation: 79
I want to Retrofit to get the user's account. When I send a token(request) then get the response below json.
{
"resultCode": 200,
"resultData": {
"user": {
"uid": 154,
"email": "[email protected]",
"nickname": "0717",
"profilepath": "profilepath.jpg",
"password": "password",
"registed_dt": "2020-07-01 00:00:00",
"updated_dt": "2020-07-17 06:13:07",
"secession": "N",
"noti_state": "N"
}
},
"message": "Success"
}
I already parsing in "http://www.jsonschema2pojo.org/" and make the class about the SerializedName.
< ApiResultDto Class>
public class ApiResultDto {
@SerializedName("resultCode")
private int resultCode;
@SerializedName("resultData")
private JsonObject resultData;
@SerializedName("message")
private String message;
public int getResultCode(){
return resultCode;
}
...
public static class ResultData {
@SerializedName("user")
private User user;
public User getUser() {
return user;
}
}
public static class User {
@SerializedName("uid")
@Expose
private Integer uid;
@SerializedName("email")
@Expose
private String email;
@SerializedName("nickname")
...
public String getEmail() {
return email;
}
public String getNickname() {
return nickname;
}
...
}
}
However, I can't get a nickname and email.
error : java.lang.String com.google.gson.JsonObject.getAsString()
I'm not sure how to get the email and the nickname values.
private void getUser() {
getToken = userPreference.getInstance().getString(Config.KEY_TOKEN);
RetrofitInterface retrofitInterface = RetrofitClient.buildHTTPClient();
Call<ApiResultDto> call = retrofitInterface.account(getToken);
UserPreference.getInstance().putString(Config.KEY_TOKEN, getToken);
call.enqueue(new Callback<ApiResultDto>() {
public void onResponse(Call<ApiResultDto> call, Response<ApiResultDto> response) {
if (response.isSuccessful()) {
if (resultData != null) {
apiResultDto = response.body();
String userEmail = apiResultDto.getResultData().get("email").getAsString();
String userNickName = apiResultDto.getResultData().get("nickname").getAsString();
} else {
Log.e("getUser", "Account null ");
}
if (getToken != null) {
}
Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ApiResultDto> call, Throwable t) {
Toast.makeText(getApplication(), "Fail", Toast.LENGTH_SHORT).show();
}
});
}
Upvotes: 0
Views: 45
Reputation: 1987
instead of private JsonObject resultData;
try private ResultData resultData;
public class ApiResultDto{
@SerializedName("resultData")
private ResultData resultData;
@SerializedName("resultCode")
private int resultCode;
@SerializedName("message")
private String message;
public ResultData getResultData(){
return resultData;
}
public int getResultCode(){
return resultCode;
}
public String getMessage(){
return message;
}
}
public class ResultData{
@SerializedName("user")
private User user;
public User getUser(){
return user;
}
}
public class User{
@SerializedName("noti_state")
private String notiState;
@SerializedName("uid")
private int uid;
@SerializedName("password")
private String password;
@SerializedName("secession")
private String secession;
@SerializedName("updated_dt")
private String updatedDt;
@SerializedName("nickname")
private String nickname;
@SerializedName("registed_dt")
private String registedDt;
@SerializedName("profilepath")
private String profilepath;
@SerializedName("email")
private String email;
public String getNotiState(){
return notiState;
}
public int getUid(){
return uid;
}
public String getPassword(){
return password;
}
public String getSecession(){
return secession;
}
public String getUpdatedDt(){
return updatedDt;
}
public String getNickname(){
return nickname;
}
public String getRegistedDt(){
return registedDt;
}
public String getProfilepath(){
return profilepath;
}
public String getEmail(){
return email;
}
}
and in onResponse()
:
public void onResponse(Call<ApiResultDto> call, Response<ApiResultDto> response) {
if (response.isSuccessful()) {
if (resultData != null) {
apiResultDto = response.body();
String userEmail = apiResultDto.getResultData().getUser().getEmail();
String userNickName = apiResultDto.getResultData().getUser().getNickname();
} else {
Log.e("getUser", "Account null ");
}
if (getToken != null) {
}
Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
}
}
Upvotes: 1