繁体   English   中英

如何在 Spring Boot 中反序列化 Kafka 主题中的 Json 字符串

[英]How to deserialize Json string from Kafka topic in spring boot

我创建了一个 POJO 来映射从 Kafka 主题收到的有效负载。 如果有效负载的格式为:

{"payload":{"name":notification,"key":"2637","message":"This is a notif"}

当我生成此 JSON 字符串类型的消息时。

"{\"payload\":{\"name\":\"notification\",\"key\":\"2637\",\"message\":\"This is a notif\"}"

它在扔

无法读取 JSON:无法构造 myfilename 的实例:没有从字符串值反序列化的带刺参数构造函数/工厂方法。

如何解决?

如果消息只是一个表示转义 JSON 的字符串,我认为您只需要使用 StringDeserializer,并将消息作为字符串处理。 我认为您不能自动绑定到 POJO,因为它不是实际的 JSON 对象。

您可以编写自定义反序列化器来转换字符串,然后委托给 ObjectMapper。

您的问题可能可以通过在映射器中使用以下设置来解决:

mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);

另外,如果您已经在使用spring-kafka ,则可以使用默认的JsonDesrializer或自定义反序列化器。

consumerProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);

更多文档可在spring 文档中找到

另一个参考: 使用 springboot 在 KafkaConsumer 中反序列化 kafka 消息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM