Вот мой пример 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 $
Чтобы решить эту проблему, я следовал этому примеру, чтобы решить проблему.Который решил проблему 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.
Кроме того, переключение в обратном порядке .addConverterFactory иногда вызывает сбой при доступе к LoginResponse
модель