我正在尝试解析JSON字符串并将其转换为以下POJO:
package apicall;
//POJO representation of OAuthAccessToken
public class OAuthAccessToken {
private String tokenType;
private String tokenValue;
public OAuthAccessToken(String tokenType,String tokenValue) {
this.tokenType=tokenType;
this.tokenValue=tokenValue;
}
public String toString() {
return "tokenType="+tokenType+"\ntokenValue="+tokenValue;
}
public String getTokenValue() {
return tokenValue;
}
public String getTokenType() {
return tokenType;
}
}
为了做到这一点,我写了以下代码:
Gson gson=new Gson();
String responseJSONString="{\"access_token\" : \"2YotnFZFEjr1zCsicMWpAA\",\"token_type\" : \"bearer\"}";
OAuthAccessToken token=gson.fromJson(responseJSONString, OAuthAccessToken.class);
System.out.println(token);
当我运行代码时,我得到以下输出:
tokenType=null
tokenValue=null
Instead of
tokenType=bearer
tokenValue=2YotnFZFEjr1zCsicMWpAA
我不明白我做错了什么。请帮忙。
答案 0 :(得分:3)
您可以通过注释字段来获得预期结果,如:
@SerializedName("token_type")
private final String tokenType;
@SerializedName("access_token")
private final String tokenValue;
答案 1 :(得分:1)
Gson如何知道如何填充你的对象?您没有no-arg构造函数,并且对象的字段与JSON对象中的字段不匹配。
将您的对象设为:
public class OAuthAccessToken {
private String accessToken;
private String tokenType;
OAuthAccessToken() {
}
...
}
答案 2 :(得分:0)
该类应具有确切的字段名称作为json,因此如果您的json有2个键:“access_token”和“token_type”,则该类应该有2个字段:
private String access_token;
private String token_type;
当然,您需要相应地更改getter / setter。