val objectMapper = ObjectMapper()
objectMapper.registerModule(JavaTimeModule())
val buf = ByteBuffer.wrap(objectMapper.writeValueAsString(className).toByteArray(Charsets.UTF_8))
反序列化代码:
val objectMapper = ObjectMapper()
objectMapper.registerModule(JavaTimeModule())
val obj = objectMapper.readValue(Charsets.UTF_8.decode(record.data()).toString(), ClassName::class.java)
4条答案
按热度按时间iyr7buue1#
检查以下方法
您可以根据dataType大小分配大小,如Int 4字节、Double和Long 8字节
用于阅读回dataType
ee7vknir2#
您可能想看一下kotlinx.serialization,它是一个官方的Kotlin项目,支持多种现成的格式,您可以使用输出并将其 Package 在
ByteBuffer.wrap
中nc1teljy3#
谢谢你的建议。
使用Jackson库(jackson-databind)的ObjectMapper()和注解解决了此问题。以下代码用于序列化:
反序列化代码:
除此之外,我还必须添加所有数据类的构造函数,并且必须向所有LocalDateTime属性添加以下注解:
3df52oht4#
简单的解决方案,无需额外的库
注意:必须针对每个数据类进行定制
将数据类转换为ByteArray
从接收到的ByteArray中恢复数据类