【问题标题】:ULong Jackson (de)serializerULong Jackson (de)serializer
【发布时间】:2021-03-24 19:44:45
【问题描述】:

我有一个将 DTO 接收到正文中的端点。 DTO 有一个 ULong 属性,当我请求杰克逊不解析(反序列化) 带有邮递员的端点。

另外,我尝试创建我的自定义序列化程序?

class ULongSerializer: StdSerializer<ULong>{
    override fun serializer(value: ULong, gen: JsonGenarator, provader: SerializerProvider){
    gen.writeStartObject()
    gen.writeNumber(value) //HERE IS THE PROBLEM
    gen.writeEndObject
  }
    
}

写数字方法都不支持ULong,也不支持写字段等其他方法。

有人可以给我一些处理这个问题的提示吗?

【问题讨论】:

    标签: kotlin jackson


    【解决方案1】:

    ULong 是一个类,你 may write Jackson 序列化器/反序列化器为它,但这种类型的字段被编译为字节码作为原始long 类型的字段。因此超过Long.MAX_VALUE 的值将被错误地序列化/反序列化(作为负数),并且自定义序列化器/反序列化器不会帮助您。

    看看kotlinx.serialization。它对无符号整数类型具有 OOTB 实验性支持。见https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md#experimental-support-for-inline-classes-ir-only

    【讨论】:

    • 感谢您的帮助
    猜你喜欢
    • 2020-12-19
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2017-09-17
    相关资源
    最近更新 更多