当我只是从集群中获取文档时,我无法在spring data elasticsearch中反序列化OffsetDateTime。有一些方法可以解决这个问题,但大多数都适用于以前版本的Spring boot。在spring data elasticsearch的当前快照版本中,jackson映射器也被删除,并替换为一些映射器类。
有人可以给我一个提示,如何正确解决这个问题与当前版本的启动弹性6。x/7。x?
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.OffsetDateTime` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
我正在使用REST高级客户端。
解决方案:使用自定义实体映射器解决:
public class CustomEntityMapper implements EntityMapper {
private final ObjectMapper objectMapper;
public CustomEntityMapper() {
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addDeserializer(LocalDateTime.class, new MillisOrLocalDateTimeDeserializer());
objectMapper = new ObjectMapper()
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
.enable(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS)
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.registerModule(javaTimeModule)
;
objectMapper.setVisibility(objectMapper.getSerializationConfig().getDefaultVisibilityChecker()
.withFieldVisibility(JsonAutoDetect.Visibility.ANY)
.withGetterVisibility(JsonAutoDetect.Visibility.NONE)
.withSetterVisibility(JsonAutoDetect.Visibility.NONE)
.withCreatorVisibility(JsonAutoDetect.Visibility.NONE));
objectMapper.findAndRegisterModules();
}
@Override
public String mapToString(Object object) throws IOException {
return objectMapper.writeValueAsString(object);
}
@Override
public <T> T mapToObject(String source, Class<T> clazz) throws IOException {
return objectMapper.readValue(source, clazz);
}
@Override
public Map<String, Object> mapObject(Object source) {
return null;
}
@Override
public <T> T readObject(Map<String, Object> source, Class<T> targetType) {
return null;
}
}
对于Spring Data Elasticsearch 3.2,您需要使用定制的Jackson映射器来注册相应的模块。
从Spring Data Elasticsearch 4.0开始(目前作为里程碑版本4.0.0可用。M3)OffsetDateTime
可以使用自定义日期格式写入和读取,似乎OffsetDateTime
对解析很挑剔,我本以为basic_date_time格式应该可以工作,但我必须找到一个自定义格式字符串。
我只是尝试了以下定义:
@Field(type=FieldType.Date, format=DateFormat.custom, pattern="uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSSZ")
但如前所述,这将适用于即将发布的Spring Data Elasticsearch第4版。
问题内容: 我的直觉告诉我,必须以某种方式将其转换为字符串或byte [](在Go中甚至可能是相同的东西?),然后将其保存到磁盘。 我找到了这个包(http://golang.org/pkg/encoding/gob/),但似乎仅用于结构? 问题答案: 序列化数据有多种方法,Go为此提供了许多软件包。某些常见编码方式的软件包: 处理地图很好。以下示例显示了地图的编码/解码: 操场
我有一个kdtree,其节点由以下字段组成:公共静态类节点实现可序列化{ 其中DataPoint定义: 公共静态类DataPoint实现可序列化{公共可比X;公共可比Y;公共可比Z; 我想序列化树,存储在文件中并在回答范围查询时反序列化。我对这个概念od序列化的理解并不好。从我收集的任何内容中,我编写了以下函数,但不起作用。有人能帮忙吗?
我需要序列化/反序列化特定枚举: 我有个例外: 我如何通过GSON序列化/反序列化它?
我加载xml文件如下 使2类 我加载xml文件(temp.xml),然后序列化类2位置和头然后StringReader,它从文件中读取字符串,然后类序列化成为反序列化 但我看到error error msg在XML文档中有一个错误(1,1)。哪里?:at系统。Xml。序列化。XmlSerializer。在系统上反序列化(XmlReader XmlReader、String encodingStyl
但这只有在保证先设置start的情况下才起作用。
问题内容: 我已经开始在我的第一个android应用程序上进行工作,并且具有处理多层图像的应用程序。我能够将项目文件的平面版本导出为PNG,但我希望能够保存分层图像以供以后编辑(包括应用于某些层的任何选项,例如基于文本的层)。 无论如何,我已经确保需要写入文件的类是“可序列化的”,但是由于android.graphics.Bitmap不可序列化这一事实而遇到了一些障碍。以下代码实质上将位图作为PN