Spring Boot:无法用 Gson 替换 Jackson,jackson 仍然出现在日志中

发布于 2025-01-12 00:50:08 字数 3578 浏览 0 评论 0原文

Gson依赖 implement("com.google.code.gson:gson:2.9.0")

application-dev.properties

spring.http.converters.preferred-json-mapper=gson
# Format to use when serializing Date objects.
spring.gson.date-format="yyyy-MM-dd HH:mm:ss"

用于处理带有数据负载的传入 POST 请求的函数

  @RequestMapping(path = [ControllerEndPoints.AddCheckingPoint], method = [RequestMethod.POST])
    fun addCheckingPoint(@RequestBody reqData: ChartServerVo): ResponseEntity<Ack> {
        var ok = true
        val data = CheckingPointEntity()
        val cpDto = reqData.checkingPointDto
        val gson = GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create()
        val payload = gson.toJson(reqData)
        mLog("json: \n json $payload")
        //val gDto = reqData.gDto
        data.apply {
            name = cpDto.name
            description = cpDto.description
            cpTypeId = cpDto.cpTypeId
            isCumulative = cpDto.isCumulative
            cpCategoryGroupId = cpDto.cpCategoryGroupId
            isTemplate = cpDto.isTemplate
            isTopTemplate = cpDto.isTopTemplate
        }
        cpr.save(data)
        pcRepo.save(reqData.purusharthChartDto.toEntity())
        pcMappingrepo.save(reqData.purusharthChartCpMappingDto.toEntity())
        return ResponseEntity(Ack(ok), HttpStatus.ACCEPTED)
    }

JSON 负载

{"checkingPointDto":{"cpCategoryGroupId":1641785600780,"cpTypeId":1,"description":"","isCumulative":false,"isTemplate":false,"isTopTemplate":false,"name":"asdf","dbCreateDts":"2022-03-05 11:54:01","dbCreateSource":"","dbUpdateDts":"2022-03-05 11:54:01","dbUpdateSource":"","id":0},"purusharthChartCpMappingDto":{"cpId":0,"id":0,"purusharthChartId":1647652877927},"purusharthChartDto":{"adminID":0,"description":"","endDate":"2022-12-30 11:54:01","id":1647652877927,"isSelfChart":false,"name":"asdf","startDate":"2022-03-05 11:54:01","userId":8}}

错误日志

POST "/api/v1/cp-add", parameters={}
2022-03-05 16:52:32.118 DEBUG 1360 --- [nio-9000-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to in_.co.innerpeacetech.bkp.controller.CheckingPointController#addCheckingPoint(ChartServerVo)
2022-03-05 16:52:32.358 DEBUG 1360 --- [nio-9000-exec-2] o.s.web.method.HandlerMethod             : Could not resolve parameter [0] in public org.springframework.http.ResponseEntity<in_.co.innerpeacetech.bkp.dto.Ack> in_.co.innerpeacetech.bkp.controller.CheckingPointController.addCheckingPoint(in_.co.innerpeacetech.bkp.dto.ChartServerVo): JSON parse error: Cannot construct instance of `in_.co.innerpeacetech.bkp.dto.ChartServerVo`, problem: `java.lang.IllegalArgumentException`; nested exception is com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of `in_.co.innerpeacetech.bkp.dto.ChartServerVo`, problem: `java.lang.IllegalArgumentException`
 at [Source: (PushbackInputStream); line: 1, column: 2]
2022-03-05 16:52:32.365  WARN 1360 --- [nio-9000-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `in_.co.innerpeacetech.bkp.dto.ChartServerVo`, 

错误中的我的数据类变量log

   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    var dbCreateDts: Date = Date(),

为什么日志中仍然存在 com.fasterxml.jackson.databind 以及为什么日志中的参数为空 POST "/api/v1/cp-add", parameters={},我正在测试来自 postman 的 api 和 headers,一切都很好,并且 json 的格式也正确。我是春天的新手,我错过了什么。

Gson dependency
implementation("com.google.code.gson:gson:2.9.0")

application-dev.properties

spring.http.converters.preferred-json-mapper=gson
# Format to use when serializing Date objects.
spring.gson.date-format="yyyy-MM-dd HH:mm:ss"

Function to handle incoming post request with data payload

  @RequestMapping(path = [ControllerEndPoints.AddCheckingPoint], method = [RequestMethod.POST])
    fun addCheckingPoint(@RequestBody reqData: ChartServerVo): ResponseEntity<Ack> {
        var ok = true
        val data = CheckingPointEntity()
        val cpDto = reqData.checkingPointDto
        val gson = GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create()
        val payload = gson.toJson(reqData)
        mLog("json: \n json $payload")
        //val gDto = reqData.gDto
        data.apply {
            name = cpDto.name
            description = cpDto.description
            cpTypeId = cpDto.cpTypeId
            isCumulative = cpDto.isCumulative
            cpCategoryGroupId = cpDto.cpCategoryGroupId
            isTemplate = cpDto.isTemplate
            isTopTemplate = cpDto.isTopTemplate
        }
        cpr.save(data)
        pcRepo.save(reqData.purusharthChartDto.toEntity())
        pcMappingrepo.save(reqData.purusharthChartCpMappingDto.toEntity())
        return ResponseEntity(Ack(ok), HttpStatus.ACCEPTED)
    }

JSON Payload

{"checkingPointDto":{"cpCategoryGroupId":1641785600780,"cpTypeId":1,"description":"","isCumulative":false,"isTemplate":false,"isTopTemplate":false,"name":"asdf","dbCreateDts":"2022-03-05 11:54:01","dbCreateSource":"","dbUpdateDts":"2022-03-05 11:54:01","dbUpdateSource":"","id":0},"purusharthChartCpMappingDto":{"cpId":0,"id":0,"purusharthChartId":1647652877927},"purusharthChartDto":{"adminID":0,"description":"","endDate":"2022-12-30 11:54:01","id":1647652877927,"isSelfChart":false,"name":"asdf","startDate":"2022-03-05 11:54:01","userId":8}}

Error log

POST "/api/v1/cp-add", parameters={}
2022-03-05 16:52:32.118 DEBUG 1360 --- [nio-9000-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to in_.co.innerpeacetech.bkp.controller.CheckingPointController#addCheckingPoint(ChartServerVo)
2022-03-05 16:52:32.358 DEBUG 1360 --- [nio-9000-exec-2] o.s.web.method.HandlerMethod             : Could not resolve parameter [0] in public org.springframework.http.ResponseEntity<in_.co.innerpeacetech.bkp.dto.Ack> in_.co.innerpeacetech.bkp.controller.CheckingPointController.addCheckingPoint(in_.co.innerpeacetech.bkp.dto.ChartServerVo): JSON parse error: Cannot construct instance of `in_.co.innerpeacetech.bkp.dto.ChartServerVo`, problem: `java.lang.IllegalArgumentException`; nested exception is com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of `in_.co.innerpeacetech.bkp.dto.ChartServerVo`, problem: `java.lang.IllegalArgumentException`
 at [Source: (PushbackInputStream); line: 1, column: 2]
2022-03-05 16:52:32.365  WARN 1360 --- [nio-9000-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `in_.co.innerpeacetech.bkp.dto.ChartServerVo`, 

My data class variable from the error log

   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    var dbCreateDts: Date = Date(),

Why is com.fasterxml.jackson.databind still present in the logs and why is the params empty in the logs POST "/api/v1/cp-add", parameters={}, I am testing the api from postman and the headers and everything is fine and the json is also properly formatted. I am new to spring, what am I missing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文