我正在使用改进版1.9,我在从嵌套的JSON响应中获取值时遇到了一些麻烦。这是回复
{
"access_token": "83ebeabdec09f6670863766f792ead24d61fe3f9",
"athlete": {
"id": 227615,
"resource_state": 3,
...
}
}
我有一个类来处理响应:
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;
}
}
和嵌套JSON对象的类:
public class StravaAthlete {
String id;
public StravaAthlete(String id) {
this.id = id;
}
public String getId() {
return id;
}
}
不幸的是,每当我致电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
不确定我做错了什么。我已将日志记录设置为已满,并且可以按照我期望的格式验证信息在响应中
答案 0 :(得分:6)
+-------------+-----------+
|coupon name |Created at |
+-------------+-----------+
|c4 |2016-01-19 |
|c5 |2016-01-19 |
|c6 |2016-01-20 |
|c7 |2016-01-20 |
|c8 |2016-01-20 |
|c9 |2016-01-20 |
|c10 |2016-01-21 |
|c11 |2016-01-21 |
+-------------+-----------+
和accessToken
不是您的JSON的关键。这就是你得到null的原因。您可以将其更改为StravaAthlete
和access_token
,也可以使用athlete
注释。 E.g。
@SerializedName
答案 1 :(得分:1)
我在此处可以看到的第一个字段public class AuthResponse {
@SerializedName("access_token")
String accessToken;
@SerializedName("athlete")
StravaAthlete stravaAthlete;
字段的名称应与您的班级athlete
中的字段匹配,或者添加注释stravaAthlete