科特林·杰克逊连载问题



我正在测试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)

我应该如何创建我的有效负载,使其能够正确编码并能够反序列化为对象?

ObjectMapper.writeValueAsBytes将其参数转换为JSON。由于payload字符串已经是JSON,因此可以跳过对objectMapper.writeValueAsBytes的调用,只调用ByteString.copyFrom(payload.toByteArray())

最新更新