簡體   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