Shr*_* Ye 8 protocol-buffers kotlin kotlinx.serialization
如何使用kotlinx.serialization将库类序列化为 Protobuf ?由于它不可编辑,因此我无法@SerialId按照runtime_usage.md#protobuf 中的说明为其属性添加注释。如果我像custom_serializers.md那样编写自己的外部序列化程序,它不会告诉我如何SerialId为 Protobuf 序列化指定s。
例如,我试图序列化 a java.math.BigDecimal,将其存储为unscaledValueasbytes和scaleas sint32。使用原始的 Protobuf Java 库很容易做到,但我想知道如何使用kotlinx.serialization做到这一点。
您可以对您无法控制的类使用上下文序列化。例如像这样定义你的序列化器(在我的例子中是 json 但你明白了)
val kxJson = Json {
serializersModule = SerializersModule {
contextual(java.math.BigDecimal::class, BigDecimalKSerializer)
}
}
Run Code Online (Sandbox Code Playgroud)
然后实施你的BigDecimalKSerializer. 在您使用的类中,BigDecimal您应该使用 注释字段@Contextual。
更多详细信息请参见此处。
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |