我正在 Java/Spring 中创建简单的休息客户端。我的请求已被远程服务正确使用,我得到了响应字符串:{"access_token":"d1c9ae1b-bf21-4b87-89be-262f6","token_type":"bearer","expires_in":43199,"grant_type":"client_credentials"}下面的代码是我想从 Json Response 绑定值的对象package Zadanie2.Zadanie2;import com.fasterxml.jackson.annotation.JsonIgnoreProperties;import com.fasterxml.jackson.annotation.JsonProperty; public class Token {String access_token; String token_type;int expiresIn;String grantType;//////////////////////////////////////////////////////public Token() { /////////////////////////////////}/////////////////////////////////////////////////////public void setAccessToken(String access_token) { this.access_token=access_token;}public String getAccessToken() { return access_token;}////////////////////////////////////////////////public void setTokenType(String token_type) { this.token_type=token_type;}public String getTokenType() { return token_type;}//////////////////////////////////////////////////////public void setExpiresIn(int expiresIn) { this.expiresIn=expiresIn;}public int getExpiresIn() { return expiresIn;}//////////////////////////////////////////////////////////public void setGrantType(String grantType) { this.grantType=grantType;}public String getGrantType() { return grantType;}}我一直收到“无法识别的字段 access_token”,但是当我添加时,objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); access_token 将为空 jsonAnswer=template.postForObject(baseUriAuthorize, requestEntity, String.class); System.out.println(jsonAnswer); Token token=objectMapper.readValue(jsonAnswer, Token.class); System.out.println(token.getAccessToken());我尝试使用@JsonProperty注释。例如,我尝试更改字段,"@JsonProperty(accessToken)"因为我认为变量名称中的“_”符号存在问题。我添加了 getter 和 setter。也许我使用的版本有问题,但我不这么认为,因为我正在使用"com.fasterxml.jackson.core"
2 回答
Qyouu
TA贡献1786条经验 获得超11个赞
您的设置器与 JSON 键不匹配。
要正确阅读它,您应该将设置器更改为:
setAccess_token()
setToken_type()
...
但老实说,这太丑了。
尝试遵循 Java bean 名称约定并使用以下命令自定义 JSON 密钥@JsonProperty:
public class Token {
@JsonProperty("access_token")
String accessToken;
....
}
月关宝盒
TA贡献1772条经验 获得超5个赞
您尝试使用"@JsonProperty(accessToken)". 但是您的 json 包含access_token. 这个怎么运作?试试这个类:
public class Token {
@JsonProperty("access_token")
String accessToken;
@JsonProperty("token_type")
String tokenType;
int expiresIn;
String grantType;
//getter setter
}
添加回答
举报
0/150
提交
取消