4 回答

TA貢獻1783條經驗 獲得超4個贊
它看起來像我為 Kafka 看到的行為,因為你也在使用 Spring 我認為它是相同的。
您的發送端將對象轉換為 Json,然后將其作為字符串發送 - 因此錯誤消息 () 中的轉義引號\"nome\": \"John\",\n\t\t\t\"cognome\": \"Doe\"
。
您需要在發送方聲明 JsonSerializer 然后將其傳遞給您User
,或者 - 如果您手動創建 Json String - 聲明它是一個字節數組,這樣 Spring 就不會嘗試轉義引號和空格。

TA貢獻1794條經驗 獲得超7個贊
看起來您正在對 JSON 進行“雙重”編碼。
如果您使用 發送 JSON 字符串RabbitTemplate,則不應使用 JSON 消息轉換器,因為它會重新編碼已經編碼的 JSON。
要么使用template.send(msg)(設置messageProperties.contentType()為application/json),要么如果使用,則在模板中convertAndSend()使用 a并SimpleMessageConverter
template.convertAndSend(exchange, rk, myJsonStrng, msg -> {
msg.getMessageProperties().setContentType("application/json");
return msg;
});

TA貢獻1828條經驗 獲得超13個贊
終于找到了導致您發布的堆棧跟蹤的匹配輸入
問題是您對 jackson 映射器的輸入是這樣的:
\"{\\n\\t\\t\\t\\\"nome\\\": \\\"John\\\",\\n\\t\\t\\t\\\"cognome\\\": \\\"Doe\\\"\\n\\t\\t}\"
杰克遜認為這是一個單一的價值,但未能將其映射到創造者身上。
正確的輸入看起來像這樣
{\n\t\t\t\"nome\": \"John\",\n\t\t\t\"cognome\": \"Doe\"\n\t\t}
正如@daniu
發布的那樣,這可能是由于Spring
其他地方的一些干擾。

TA貢獻1841條經驗 獲得超3個贊
您可能可以編寫復雜的自定義 JSON 配置,但最簡單的解決方案是將您的消息反序列化回類,User
然后向您的Persona
類添加一個構造函數,該構造函數將id
classUser
作為參數
添加回答
舉報