【发布时间】:2019-07-01 14:51:15
【问题描述】:
这是用户成功验证时的 JSON 示例
{
"status": "success",
"message": "",
"data": {
"_id": {
"$id": "..."
},
"email": "...",
"name": "...",
"mobile": "...",
"mobile_status": "...",
"email_status": "..."
}
}
当用户凭据错误时
{
"status": "error",
"message": {
"msg": [
"Login detail incorrect"
]
},
"data": ""
}
注意message 和data 的数据类型的变化。使用改造配合这个我收到了著名的错误Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
为了解决这个问题,我按照this 示例解决了这个问题。这确实解决了 OBJECT/ARRAY 问题。
我有 3 个模型 LoginResponse,MessageResponse,DataResponse 这就是我试图访问 MessageResponse 和 DataResponse 的方式
我不确定我是否可以使用 2
Gson messageDeserializer = new GsonBuilder().setLenient().registerTypeAdapter(LoginResponse.class, new MessageDeserializer()).create();
Gson dataDeserializer = new GsonBuilder().setLenient().registerTypeAdapter(LoginResponse.class, new DataDeserializer()).create();
builder.addConverterFactory(GsonConverterFactory.create(messageDeserializer));
builder.addConverterFactory(GsonConverterFactory.create(dataDeserializer));
我不认为这些自定义 JsonDeserializer 正在按照它应该的方式工作。我无法从这些 JsonDeserializer 中转换返回的响应。我可以将它们作为字符串访问的唯一方法,它甚至不是正确的 JSON 格式的字符串。
当我访问 LoginResponse 模型时,切换回 .addConverterFactory 的顺序有时会导致崩溃
【问题讨论】:
标签: android json gson retrofit2