跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Spring boot 2.4.1 RestController 返回的 JSON 格式不对
未分類
4 2 月 2021

Spring boot 2.4.1 RestController 返回的 JSON 格式不对

Spring boot 2.4.1 RestController 返回的 JSON 格式不对

資深大佬 : NULL2020 10

自定义的返回结构体:

public class JsonResult<T> {     private int code;     private String message;     private T data; } 

之前使用 Springboot 2.1.4,接口返回的格式为

{   "code": 200,   "message": "操作成功",   "data": null } 

最近考虑升级下版本,测试 Springboot 2.4.1,返回格式为:

[   "com.xxx.support.JsonResult",   {     "code": 200,     "message": "操作成功",     "data": [       "java.util.ArrayList",       []     ]   } ] 

是要修改什么配置吗?看 release note 也没看到有相关的说明。

大佬有話說 (10)

  • 資深大佬 : chendy

    目测自定义了序列化之类的,检查一下相关代码吧,默认配置不是这样的

  • 資深大佬 : JamesMackerel

    这个看上去像是 Jackson 的 DefaultTyping,Spring 默认使用 Jackson 做序列化和反序列化,建议用这些关键字查一下。

  • 資深大佬 : arthas2234

    我之前也遇到过这个问题
    后面通过 git 对比发现是因为自己注入了 ObjectMapper ( com.fasterxml.jackson.databind.ObjectMapper )类引起的,现在改成通过 new 来创建
    导致问题的根本原因还没找到,现在暂时还没时间排查
    可能是因为自己注入后覆盖了 spring boot 的默认配置

  • 資深大佬 : 0x666666

    看样子 你这是做了序列化吧?检查你的代码里面有没有统一参数返回配置做了序列化的东西。

  • 主 資深大佬 : NULL2020

    @chendy #1
    @JamesMackerel #2
    @arthas2234 #3
    @0x666666 #4

    两个版本都配置了 ObjectMapper bean,配置一样,测试过把 bean 注释掉,效果一样,即旧版本仍然是正常的,新版本仍然是不正常,就很奇怪。

  • 資深大佬 : jorneyr

    从 Spring Boot starter 创建的网址 http://start.spring.io 下载了最小的 web 包,只写一个最简单的 Controller 返回一个普通对象,序列化没问题,应该是你的配置问题。

  • 主 資深大佬 : NULL2020

    @jorneyr #6 我也试了下,真是正常的,但我也没配置啥啊。。

  • 資深大佬 : arthas2234

    @NULL2020 八成是配置哪里冲突了,我之前也搞了好久,只能用 git 比较代码,一个一个的排查

  • 主 資深大佬 : NULL2020

    @arthas2234 #8 找到原因了,看附言

  • 資深大佬 : arthas2234

    @NULL2020 哈哈,解决了就好。你的问题和我的差不多,也是蛮诡异的,后面我找一下具体的原因

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具