gpt4 book ai didi

android - SerializedName 注释似乎在 Moshi 中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:36:30 24 4
gpt4 key购买 nike

所以我正在尝试使用 Moshi 解析来 self 的服务器的调用。这是我的响应对象。

public class TokenResponse {
@SerializedName("accessToken")
public String accessToken;
public String token_type;
public int expires_in;
public String userName;
public String name;
@SerializedName(".issued")
public String issued;
@SerializedName(".expires")
public String expires;
public String Roles;

}

这是我的端点定义(不是很重要,但无论如何我都会包含它)

public interface ServerService {

@POST("/token")
@FormUrlEncoded
Call<TokenResponse> getToken(@Field("username") String username,
@Field("password") String password, @Field("grant_type") String grant_type);

}

这是我用来调用的代码。

Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://xxx/")
.addConverterFactory(MoshiConverterFactory.create())
.build();

ServerService service = retrofit.create(ServerService.class);

Call<TokenResponse> call = service.getToken("admin@admin.com", "password1!", "password");

call.enqueue(new Callback<TokenResponse>() {
@Override
public void onResponse(Call<TokenResponse> call, Response<TokenResponse> response) {
if (response.isSuccessful()) {
// tasks available
TextView tv = (TextView)findViewById(R.id.tvToken);
tv.setText(response.body().accessToken);


} else {
// error response, no access to resource?
}
}
});

在 onResponse 方法中,我的 response.body() 始终具有 accessToken,发布和过期为 null。我为其他参数取回值。使用 Android Profiler,我确定它会将此作为响应返回。

{  
"access_token":"_xxx",
"token_type":"bearer",
"expires_in":1209599,
"userName":"xxx",
"name":"LOURDES RILEY",
".issued":"Tue, 19 Dec 2017 23:37:06 GMT",
".expires":"Tue, 02 Jan 2018 23:37:06 GMT",
"Roles":"[\"Admin\"]"
}

那我做错了什么?为什么 SerializedName 不起作用?

最佳答案

@SerializedName("accessToken")是Gson

应该是

@Json(name="access_token")

关于android - SerializedName 注释似乎在 Moshi 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47896998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com