0

Android 聊天在 DataSnapshot.getValue() 上崩溃以获取时间戳

我正在尝试将时间戳属性添加到我的 POJO。上面的解决方案告诉杰克逊忽略应用程序使用的真实数据成员。我正在使用 AutoValue,但不知道如何注释我的课程以使其正常工作。

@AutoValue
public abstract class Pojo {

    @JsonProperty("id") public abstract String id();
    @JsonProperty("name") public abstract String name();
    @JsonProperty("date") public abstract long date();

    @JsonCreator public static Pojo create(String id, String name, 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 {
        jgen.writeString(ServerValue.TIMESTAMP.toString());
    }
}

但这将字符串date: "{.sv=timestamp}"写入firebase而不是生成时间戳

4

1 回答 1

0

发现我的错误:

@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);
    }
}
于 2016-04-14T01:06:04.697 回答