У меня следующий JSON.
{
"code": 200,
"status": "success",
"request": [],
"total": 10,
"count": 10,
"offset": 0,
"limit": 100,
"response": [
{
"uid": "doc-1",
"name": "Иванов Иван Иванович",
"spec": [
"Врач лабораторной диагностики",
"Врач-терапевт"
],
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/01.jpg"
},
{
"uid": "doc-10",
"name": "Попов Евгений Олегович",
"spec": [
"Врач ренгенолог"
],
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/10.jpg"
},
{
"uid": "doc-2",
"name": "Петров Сергей Иванович",
"spec": [
"Врач лабораторной диагностики",
"Врач диетолог",
"врач-терапевт"
],
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/02.jpg"
},
{
"uid": "doc-3",
"name": "Сидоров Сергей Константинович",
"spec": [
"Врач лабораторной диагностики",
"Врач - ренгенолог"
],
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/03.jpg"
},
{
"uid": "doc-4",
"name": "Константинов Александр Константинович",
"spec": [
"Врач лабораторной диагностики",
"Врач-терапевт"
],
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/04.jpg"
},
{
"uid": "doc-5",
"name": "Сергеев Иван Константинович",
"spec": "Врач лабораторной диагностики",
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/05.jpg"
},
{
"uid": "doc-6",
"name": "Попов Дмитрий Данилович",
"spec": [
"Врач лабораторной диагностики",
"Врач ренгенолог"
],
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/06.jpg"
},
{
"uid": "doc-7",
"name": "Иванова Екатерина Павловна",
"spec": [
"Врач терапевт"
],
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/07.jpg"
},
{
"uid": "doc-8",
"name": "Екатеринина Лада Павловна",
"spec": [
"Врач терапевт"
],
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/08.jpg"
},
{
"uid": "doc-9",
"name": "Васильева Екатерина Олеговна",
"spec": [
"Врач терапевт"
],
"photo": "http://demo-api.atlas-patiente.office.prosvdigital.ru/img/doctor/09.jpg"
}
]
}
Как видите, все поля spec
являются массивом, кроме одного - doc-5
.Я получаю с данными в Retrofit.Это мой POJO
для этого ответа.
public class Doctor implements IDObject<String>, Serializable {
public static final String FIELD_NAME = "name";
@SerializedName("uid")
private String id;
@SerializedName("name")
private String name;
@SerializedName("doctorShortName")
private String shortName;
@SerializedName("spec")
private List<String> speciality;
@SerializedName("photo")
private String photoUrl;
public String getName() {
return name;
}
public String getPhotoUrl() {
return photoUrl;
}
public List<String> getSpeciality() {
return speciality;
}
public String getShortName() {
return shortName;
}
@Override
public String getId() {
return id;
}
@Override
public int hashCode() {
return getId().hashCode();
}
@Override
public boolean equals(Object obj) {
return obj instanceof Doctor && ((Doctor) obj).getId().equals(getId());
}
}
Каждый раз, когда я пытаюсь разобрать это = ошибка.Но если я сделаю поле spec
в doc-5
String = все хорошо!
Но я не знаю, какой сервер ответов может мне отправить, потому что у доктора может быть только одна специальность (в данном случае spec
будет строкой) или он может иметь два и более (в данном случае spec
будет массивом).
И как мне создать многоцелевой десериализатор, который будет работать в обоих случаях?