如何使用最新的 mongojack 插入 Date 对象?
How to insert Date object with the latest mongojack?
所以在我的对象中,我有 private Date date;
当我插入时我得到了这个异常:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: JsonGenerator of type org.mongojack.internal.object.document.DocumentObjectGenerator not supported: org.mongojack.internal.DateSerializer is designed for use only with org.mongojack.internal.object.BsonObjectGenerator or org.mongojack.internal.stream.DBEncoderBsonGenerator or com.fasterxml.jackson.databind.util.TokenBuffer (through reference chain: com.test.DocumentWrapper["date"])
我正在尝试使用该日期字段设置 mongo TTL。
解决此问题,请使用已修复此错误的2.10.0版本。
我最近遇到了同样的问题:通过 MongoJack 将日期作为 Date 对象存储到 MongoDB 中。
首先,我使用的是MongoJack 2.10.0版本。
并且它需要创建自己的 Serializer 和 Deserializer。
public class Serializer extends JsonSerializer<DateTime> {
@Override
public void serialize(DateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeObject(new Date(value.getMillis()));
}
}
public class Deserializer extends JsonDeserializer<DateTime> {
private static final DateDeserializer DATE_DESERIALIZER = new DateDeserializer();
@Override
public DateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
Date date = DATE_DESERIALIZER.deserialize(p, ctxt);
return date == null ? null : new DateTime(date);
}
}
.....
@JsonSerialize(using = EdunavJsonDateTimeSerializer.class)
@JsonDeserialize(using = EdunavJsonDateTimeDeserializer.class)
private DateTime testDate;
public DateTime getTestDate() {
return testDate;
}
public void setTestDate(DateTime testDate) {
this.testDate = testDate;
}
......
就我而言,我将 Date 转换为 joda DateTime 以与我的代码保持一致,但可以更改为其他类型(LocalDateTime、OffsetDateTime 等)
所以在我的对象中,我有 private Date date;
当我插入时我得到了这个异常:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: JsonGenerator of type org.mongojack.internal.object.document.DocumentObjectGenerator not supported: org.mongojack.internal.DateSerializer is designed for use only with org.mongojack.internal.object.BsonObjectGenerator or org.mongojack.internal.stream.DBEncoderBsonGenerator or com.fasterxml.jackson.databind.util.TokenBuffer (through reference chain: com.test.DocumentWrapper["date"])
我正在尝试使用该日期字段设置 mongo TTL。
解决此问题,请使用已修复此错误的2.10.0版本。
我最近遇到了同样的问题:通过 MongoJack 将日期作为 Date 对象存储到 MongoDB 中。 首先,我使用的是MongoJack 2.10.0版本。 并且它需要创建自己的 Serializer 和 Deserializer。
public class Serializer extends JsonSerializer<DateTime> {
@Override
public void serialize(DateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeObject(new Date(value.getMillis()));
}
}
public class Deserializer extends JsonDeserializer<DateTime> {
private static final DateDeserializer DATE_DESERIALIZER = new DateDeserializer();
@Override
public DateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
Date date = DATE_DESERIALIZER.deserialize(p, ctxt);
return date == null ? null : new DateTime(date);
}
}
.....
@JsonSerialize(using = EdunavJsonDateTimeSerializer.class)
@JsonDeserialize(using = EdunavJsonDateTimeDeserializer.class)
private DateTime testDate;
public DateTime getTestDate() {
return testDate;
}
public void setTestDate(DateTime testDate) {
this.testDate = testDate;
}
......
就我而言,我将 Date 转换为 joda DateTime 以与我的代码保持一致,但可以更改为其他类型(LocalDateTime、OffsetDateTime 等)