[英]How to Get Json object and Json Array in Same KEY by retrofit for android
[英]How to get inner JSON object with Retrofit in Android? (not array)
我想Retrofit獲取用戶的賬號。 當我發送一個令牌(請求)然后得到 json 下面的響應。
{
"resultCode": 200,
"resultData": {
"user": {
"uid": 154,
"email": "test11@testtesttest.com",
"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"
}
我已經在“http://www.jsonschema2pojo.org/”中解析並制作了關於 SerializedName 的 class。
<ApiResultDto 類>
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;
}
...
}
}
但是,我無法獲得昵稱和 email。
error : java.lang.String com.google.gson.JsonObject.getAsString()
我不確定如何獲得 email 和昵稱值。
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();
}
});
}
而不是private JsonObject resultData;
嘗試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;
}
}
在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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.