0

我正在尝试解析 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

我不明白我是否做错了什么。请帮忙。

4

3 回答 3

3

您可以通过注释您的字段来获得预期的结果,例如:

@SerializedName("token_type")
private final String tokenType;
@SerializedName("access_token")
private final String tokenValue;
于 2012-07-08T09:24:31.237 回答
1

Gson 应该如何知道如何填充您的对象?您没有无参数构造函数,并且对象的字段与 JSON 对象中的字段不匹配。

使您的对象如下:

public class OAuthAccessToken {
    private String accessToken;
    private String tokenType;

    OAuthAccessToken() {
    }

    ...
}
于 2012-07-08T09:20:10.893 回答
0

该类应具有与 json 完全相同的字段名称,因此如果您的 json 有 2 个键:“access_token”和“token_type”,则该类应具有 2 个字段:

private String access_token;
private String token_type;

而且,当然,您需要相应地更改 getter/setter。

于 2012-07-08T09:22:17.797 回答