我使用的是springkafka集成,我有自己的值generic serializer/deserializer,如下所示
序列化程序:
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
请告诉我哪里错了,而不是想要的东西,提前谢谢。
1条答案
按热度按时间whlutmcx1#
有些情况需要确认:
你的
Serializer
is工作这个
Deserializer
只是工作,但它返回了一个LinkedHashMap
而不是你想要的东西,对吧?你不能把它转换成LinkedHashMap
给你的object
.我发现问题转移到如何将linkedhashmap转换/强制转换为对象,而您使用了
ObjectMapper
. 如果所有的情况都能得到证实,我发现这里有一个很好的帖子可以回答你的问题,把linkedhashmap投射到复杂的物体上