我正在使用Spring Kafka集成,我有自己的值通用序列化器/反序列化器,如下所示
序列化程序:
public class KafkaSerializer<T> implements Serializer<T> {
private ObjectMapper mapper;
@Override
public void close() {
}
@Override
public void configure(final Map<String, ?> settings, final boolean isKey) {
mapper = new ObjectMapper();
}
@Override
public byte[] serialize(final String topic, final T object) {
try {
return mapper.writeValueAsBytes(object);
} catch (final JsonProcessingException e) {
throw new IllegalArgumentException(e);
}
}
}
反序列化程序:
public class KafkaDeserializer<T> implements Deserializer<T> {
private ObjectMapper mapper;
@Override
public void close() {
}
@Override
public void configure(final Map<String, ?> settings, final boolean isKey) {
mapper = new ObjectMapper();
}
@Override
public T deserialize(final String topic, final byte[] bytes) {
try {
return mapper.readValue(bytes, new TypeReference<T>() {
});
} catch (final IOException e) {
throw new IllegalArgumentException(e);
}
}
}
序列化程序工作得很好,但是当涉及到在消费消息时反序列化值时,我得到了一个LinkedHashMap
而不是所需的对象,请告诉我我错在哪里,提前感谢。
有些情况需要确认:
串行器
工作正常LinkedHashMap
而不是您期望的对象,对吗?并且您无法将该LinkedHashMap
转换为您的对象
。我发现问题转移到如何将LinkedHashMap转换/投射到对象,而您使用了ObjectMapper
。如果所有情况都可以确认,我在这里找到了一个很好的帖子,可以回答您的问题将LinkedHashMap投射到复杂对象
mapper.convertValue(desiredObject, new TypeReference<type-of-desiredObject>() { })
ObjectMapper
的API在[这里](https://fasterxml.github.io/jackson-databind/javadoc/2.3.0/com/fasterxml/jackson/databind/ObjectMapper.html#convertValue(java.lang.Object,com.fasterxml.jackson.core.type.TypeReference))
我希望我没有错过你的意图,你可以补充必要的情况,所以有人或我可以改善这个答案。
问题内容: 确定,所以我编辑了问题,因为它不够清楚。 编辑2 :更新了JSON文件。 我在Android应用程序中使用GSON,我需要解析来自服务器的JSON文件,这些文件有点太复杂了。我不想让我的对象结构太沉重,所以我想简化内容: 所以我的对象的结构将不是JSON文件的结构。 例如,如果在JSON中,我有以下内容: 我不想保留我当前的对象结构,即一个对象,其中包含一个和一个“总计”。但是我只想将
我在一个Kafka消息中使用了我自己的类,它有一堆字符串数据类型。 我想我需要编写自己的序列化器并将其提供给生产者属性?
我有下面的JSON,我正试图使用Jackson API反序列化它 我基本上需要一个附件类,它有一个AttachmentFile对象列表,如下所示: 如何使用自定义反序列化器实现这一点? 谢谢
情况如下:我已经设法让Jackson反序列化以下通用 作为HTTP客户端,并使用exchange
我正在构建一个简单的项目与Spring boot和sping-kafka,我不能配置它,使其工作,它是一个简单的应用程序,生成笔记(作者,内容,createddatetime,lastmodefieddatetime)和发送基于笔记的事件,当他们被创建。 我已经玩了两天了,但我想我还没学会。 这是我的配置,我很确定它有很多锅炉板,但我已经用了几个例子来使我的工作。 我有2个生产者和消费者工厂,因为
问题内容: 我有以下课程: 当我执行以下代码时: 产生的json字符串如下所示: 我的问题是让上面的json字符串反序列化回一个 宾语。 我的反序列化代码如下所示: 它使用正确的键反序列化为HashMap,但不会为这些值创建Theme对象。我不知道在readValue()方法中要指定什么而不是“ HashMap.class”。 任何帮助,将不胜感激。 问题答案: 你应该创建特定的Map类型并将其提