НапримерКак использовать экземпляр Gson в классе Serializer/Deserializer?
public class HistoryRecordDeserializer implements JsonDeserializer<HistoryRecord> {
private LocalDateTimeConverter dateTimeConverter = new LocalDateTimeConverter();
@Override
public HistoryRecord deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
User user = new User();
user.setId(UUUID.fromString(json.get("user").get("id").getAsString()));
OtherData data = new OtherData();
data.setData(json.get("otherData").getAsLong());
return UserAndData(user, otherData);
}
Как вы можете видеть, я экземпляр User
и OtherData
вручную, но я думаю, что есть лучшее решение. Каков наилучший способ десериализации пользователя с помощью fromJson(...)
? Должен ли я передать экземпляр Gson на HistoryRecordDeserializer
? Должен ли я создать новый?
Это зависит от того, что ваш POJO и Json выглядеть. Вы могли бы создать новый Gson или использовать метод 'JsonDeserializationContext context'' deserialize' для объектов десериализатора – varren
@varren, когда я в последний раз пытался использовать 'context.deserialize (json.get (« id »), UUID.class, context)' it просто верните «null». Почему это так? – Alexandr
действительно не знают, но контекст в значительной степени похож на десанциализатор gson сверху. Если вы gson можете десериализовать это, тогда контекст также сможет это сделать. Но это нормально делать, как вы делали в вас пост выше – varren