End*_*ave 1 android json retrofit
我正在使用改进版1.9,我在从嵌套的JSON响应中获取值时遇到了一些麻烦.这是回复
{
"access_token": "83ebeabdec09f6670863766f792ead24d61fe3f9",
"athlete": {
"id": 227615,
"resource_state": 3,
...
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个类来处理响应:
public class AuthResponse {
String accessToken;
StravaAthlete stravaAthlete;
public AuthResponse(String accessToken, StravaAthlete stravaAthlete) {
this.accessToken = accessToken;
this.stravaAthlete = stravaAthlete;
}
public String getAccessToken() {
return accessToken;
}
public StravaAthlete getStravaAthlete() {
return stravaAthlete;
}
}
Run Code Online (Sandbox Code Playgroud)
和嵌套JSON对象的类:
public class StravaAthlete {
String id;
public StravaAthlete(String id) {
this.id = id;
}
public String getId() {
return id;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是每当我打电话给authResponse.getStravaAthlete().getId()我
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.drdp.rideart.api.model.StravaAthlete.getId()' on a null object reference
Run Code Online (Sandbox Code Playgroud)
不确定我做错了什么.我已将日志记录设置为完整,并且可以按照我期望的格式验证信息是否在响应中
accessToken而StravaAthlete不是你的JSON的关键.这就是你得到null的原因.您可以将它们更改为access_token和 athlete,或使用@SerializedName注释.例如
public class AuthResponse {
@SerializedName("access_token")
String accessToken;
@SerializedName("athlete")
StravaAthlete stravaAthlete;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |