【问题标题】:Inserting data into database returns MismatchedInputException error将数据插入数据库返回 MismatchedInputException 错误
【发布时间】:2019-11-27 22:14:04
【问题描述】:

我正在尝试向数据库中插入一些数据,但出现以下错误:

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `org.joda.time.DateTime` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('2019-04-19')

我的内容协商

install(ContentNegotiation) {
        jackson {
            enable(SerializationFeature.INDENT_OUTPUT)
        }
    }

还有我的模特:

data class User(
//some codes
val registrationDate = DateTime  // org.joda.time.DateTime
)

我什么时候会通过 json 发送:

{
 //some other data
 "registrationDate" : "2019-07-15"
}

有人可以帮帮我吗?

【问题讨论】:

    标签: serialization kotlin ktor kotlin-exposed


    【解决方案1】:

    您必须为 Jackson https://github.com/FasterXML/jackson-datatype-joda 安装 Joda 模块并将其添加到您在 ktor 中的 jackson 配置中:

    install(ContentNegotiation) {
            jackson {
                registerModule(JodaModule())
                enable(SerializationFeature.INDENT_OUTPUT)
            }
        }
    

    您还可以使用数据类属性上的注释来控制序列化/反序列化行为:

    data class Account(
        val uid: String? = null,
        val firstName: String,
        val lastName: String,
        val email: String,
        @get:JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
        val createdTime: DateTime? = null
    )
    
    

    【讨论】:

    • 非常感谢老兄。它现在记录为时间戳,我如何将其记录为日期? yyyy-MM-dd?
    • 再次感谢您! =)
    猜你喜欢
    • 2013-01-27
    • 1970-01-01
    • 2017-07-03
    • 2018-01-25
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多