我试图使用fasterxml持久化mongo集合中有100个字段的java对象.
例如,101类型的100字段存储如下:
100
我想以ISODate种格式存储它,这在mongo Shell中是可用的.
现在,我知道有一种方法可以格式化对象映射器,以字符串dateformat存储日期.
例如
有办法吗?
我试图使用fasterxml持久化mongo集合中有100个字段的java对象.
例如,101类型的100字段存储如下:
100
我想以ISODate种格式存储它,这在mongo Shell中是可用的.
现在,我知道有一种方法可以格式化对象映射器,以字符串dateformat存储日期.
例如
有办法吗?
你需要的是Jackson Joda Module美元.如果将其导入类路径,可以在映射器上执行以下操作,将其写入所需的时间戳:
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
mapper.writeValueAsString(date);
必要时,可以用POJO替换上面代码示例中的date
.
编辑:
public class IsoDateSerializer extends JsonSerializer<DateTime> {
@Override
public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider) {
String isoDate = ISODateTimeFormat.dateTime().print(value);
jgen.writeRaw("ISODATE(\"" + isoDate + "\")");
}
然后,您可以在mapper上为所有DateTime类型注册它
mapper.addSerializer(DateTime.class, new IsoDateSerializer());
或者使用注释在函数上指定它
@JsonSerializer(using = IsoDateSerializer.class)
public DateTime createdTime;