- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我正在尝试使用 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/
通常,我使用@SerializedName批注来映射JSON字段。但是,在Google Architecture Component示例项目中,我看到它们使用了@field:SerializedNam
我制作了一个 Bean 类,但是当我运行它时,这会出错。我不知道我该如何解决它。请帮我。 Error:(7, 8) error: cannot find symbol class Serialize
在我的 Android 应用程序中,我定义了太多模型类,并且使用了大写属性名称,如下所示: public String FirstName; public String LastName; 使用此命名
我可以从配置文件等中获取@SerializedName值吗? 我的意思是: @SerializedName(value = configProfider.getJsonFieldName()) pri
在使用 Proguard 的项目中,minifyEnabled true 在使用 Gson 时未正确解析 ApiError 类。 data class ApiResponse( @Serial
我有一个正在序列化以发出请求的对象。 private static final String JSON_REQUEST_ID = "requestId"; private static final S
我有一个 json,我在 Realm 模型中使用 gson 通过注释 @SerializedName 进行转换。 但有时在 json 中,有一个未知的键,我想将其序列化为字符串。 public cla
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 5 年前。 Improve th
我的服务有问题,因为同一字段在请求和响应中的形式不同,因此我使用 @Expose 注释来序列化一个并反序列化另一个: @SerializedName("photo") @Expose(deserial
我正在使用 Retrofit 并且根据 json 有很多 pojo 类。因为我正在使用 Gson 解析,所以我需要使用: @SerializedName("home") private List ho
我有一个包含以下代码的数据类 data class MyBody( @SerializedName("ver") val version: Int, @SerializedName("
Gson 中有没有办法将多个 JSON 字段映射到单个 Java 对象成员变量? 假设我有一个 Java 类... public class MyClass { String id;
不幸的是,我从中提取的 JSON 文件有一个具有相同变量名称的节点,但可能随机具有两种不同的数据类型。当我进行网络调用(使用 gson)时,出现错误: com.google.gson.JsonSynt
我正在使用 com.google.gson.annotations.SerializedName 以及 gson 文档中提到的元素“value”和“alternate”@SerializedName(
我正在根据我的目的改编我在网上找到的一些代码。它正在获取具有列名称(例如“william_henry_harrison”)但使用本地名称(例如“Tippecanoe”)的数据: public clas
这是我使用 Gson 进行序列化的第一种方法。我收到 facebook 对我的 android 应用程序的响应,如下所示: Result: { Response: resp
我有一个带有一些 GSon 注释的 DTO。 我的问题是,如果我的应用程序在开发、暂存或生产中运行,这些注释的值必须改变... 目前,我必须用不同的值打包我的应用程序,我希望它是自动的...它在 Sp
所以我正在尝试使用 Moshi 解析来 self 的服务器的调用。这是我的响应对象。 public class TokenResponse { @SerializedName("accessT
我有这样一个类: class A { @Expose @SerializedName("a_id") private String id; } 现在我想创建扩展 A 的类 B,
关于 Gson,@Expose 和 @SerializedName("stringValue") 有什么区别? 最佳答案 即使为时已晚,我也想回答这个问题。要解释它我们必须知道什么是serializa
我是一名优秀的程序员,十分优秀!