Я сохраняю входящий JSON с сервера в моем классе модели.я пытался создать обобщенный класс ответа для хранения ответа различных веб-сервисов в области базы данных.
Вот мой класс ответа
public class TResponse<T> {
@Expose
private String code;
@Expose
private String message;
@Expose
private Summary summary;
@Expose
private String status;
@Expose
private String error;
@Expose
private List errors;
@Expose
private List<T> response;
}
Json, который я пытаюсьstore
{
"diabetes": [
{
"_id": "5b83a79e4297c60021cc0ee2",
"blood_glucose": 137,
"timestamp": "2018-07-31T09:01:48+00:00",
"utc_offset": "+05:30",
"last_updated": "2018-08-27T07:26:22+00:00"
},
{
"_id": "5b83a79e4297c60021cc0e88",
"blood_glucose": 140,
"timestamp": "2018-07-31T09:01:48+00:00",
"utc_offset": "+05:30",
"last_updated": "2018-08-27T07:26:22+00:00"
}
],
"errors": [
{
"code": 409,
"message": "Conflict",
"errors": "Activity is already taken",
"activity_id": "468eb4bf-0d84-4b77-bb94-daebd0063955"
}
]
}
массив диабета будет храниться в обобщенном списке List<T> response
, теперь, чтобы отобразить диабет на List<T> response
, я должен отобразить этот список явно в десериализаторе и для этого яиспользуя Gson
parser
@Override
public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
TResponse tResponse = new TResponse();
tResponse.setSummary(context.deserialize(json.getAsJsonObject().get("summary"),Summary.class));
tResponse.setResponse(context.deserialize(json.getAsJsonObject().get(mKey.toLowerCase()),List.class));
tResponse.setErrors(context.deserialize(json.getAsJsonObject().get("errors").getAsJsonArray(),List.class));
return (T) tResponse;
}
в приведенном выше коде, mKey является Diabetes.class
Теперь проблема заключается в том, когда я пытаюсь создать новый объект TResponse
и сохранить в нем данныеGson сохраняет его как LinkedTreeMap
, а не List
, см. Скриншот ниже