【发布时间】:2021-12-31 21:23:04
【问题描述】:
我正在测试 PubSub 消息发送,它有一个名为 PubSubTemplate 的 bean,它允许向 PubSub 发送消息,我想发送原始 JSON,但我注意到其他使用 PubSub 消息的应用程序无法反序列化它。问题是当 JacksonPubSubMessageConverter 将有效负载转换为 PubSubMessage 它使用 ByteString.copyFrom(objectMapper.writeValueAsBytes(payload)) 并且它对我的有效负载进行双重编码,因此当读取发生时,实际的 json 看起来像这样:\"{ \\\"value\\\": 42 }\"
fun main() {
val objectMapper = ObjectMapper()
objectMapper.registerModule(KotlinModule())
val payload = "{ \"value\": 42 }"
val payloadEncoded = ByteString.copyFrom(objectMapper.writeValueAsBytes(payload))
val readValue = objectMapper.readerFor(TestClass::class.java).readValue<TestClass>(payloadEncoded.toByteArray())
println(readValue)
}
data class TestClass(var value: Int)
我应该如何创建我的有效负载,以便正确编码并能够反序列化为对象?
【问题讨论】:
标签: json kotlin serialization jackson google-cloud-pubsub