Сохранение firebase ServerValue.TIMESTAMP в POJO AutoValue


person Vinay Nagaraj    schedule 12.04.2016    source источник
comment
пожалуйста, прочитайте ответ по ссылке, которую вы уже знаете: Firebase.ServerValue.TIMESTAMP задается как карта (содержащая {.sv: timestamp}), которая сообщает Firebase заполнить это поле временем сервера. Когда эти данные считываются, это фактическая метка времени unix, которая является длинной (.sv=timestamp — это заполнитель, заполненный сервером firebase, вы должны отправить его на fb, и результат будет содержать ожидаемое время)   -  person Meiko Rachimow    schedule 12.04.2016
comment
Да, но вместо того, чтобы создавать два POJO, один для записи/сериализации со свойством карты и один для чтения с длинным, я хотел знать, можно ли аннотировать мой класс автозначения, чтобы иметь возможность делать это с помощью одного.   -  person Vinay Nagaraj    schedule 12.04.2016


Ответы (1)


Поймал свою ошибку:

@AutoValue
public abstract class Pojo {


    @JsonProperty("id") public abstract String id();

    @JsonProperty("name") public abstract String name();

    //Custom serializer
    @JsonSerialize(using = TimestampSerializer.class) @JsonProperty("date") public abstract long date();

    @JsonCreator public static Pojo create(@JsonProperty("id") String id, @JsonProperty("name") String name, @JsonProperty("date") long date) {
        return new AutoValue_Pojo(id, name, date);
    }
}

public class TimestampSerializer extends JsonSerializer<Long> {
    @Override public void serialize(Long value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
        //Use writeObject() instead of writeString()
        jgen.writeObject(ServerValue.TIMESTAMP);
    }
}
person Vinay Nagaraj    schedule 14.04.2016