添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

最近,某同事遇到如下怪异问题,程序编译没问题,启动没问题,从controller调用到service,service里的方法正常返回,controller也能正常接收返回参数,但controller将返回参数json化后,返回给前端的时候,报异常了。

具体错误信息如下:

异常类 → "exception":"org.springframework.http.converter.HttpMessageNotWritableException"

详细异常错误信息 → "message":"Could not write content: No serializer found for class cn.*.*.search.dto.SearchedNotice and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: cn.*.*.*.notice.search.dto.OilPaging[\"articles\"]->java.util.ArrayList[0]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class

最根本原因 → nested exception is com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class

JSON化失败原因 → to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS

原因已经很明确了,OilPaging该DTO类有的属性是null,导致json化得时候,fasterxml -jackson 将对象转换为json时报错了。

解决方法很简单,找到无法json化的对象,在可能为空的字段上设置@JsonSerialize(include=Inclusion.NON_EMPTY)

意思就是:假入该属性为null,则忽略。

解决 报错org.springframework.http.converter. HttpMessageNotWritableException : Could not write JSON 如果是中途接手一个项目的小伙伴要注意了,这个项目是不是在外层封装了统一的 返回 体对象,这样也会导致,即使这个下载导出接口定义成为void了,但是最终的 返回 依然会被封装一次。因此我们需要在统一 返回 的地方排除掉content为application/x-download的response。分析了一下报错信息,下载导出接口指定了content-type “application/x-download”的方法不应该有 返回 ,也就是说方法 返回 类型应该是void。但是改成void以后,还是会出现相同的报错信息。 先把完成的报错(应该算是警告日志)贴出来: Resolved [org.springframework.http.converter. HttpMessageNotWritableException : No converter found for return value of type: class com.test.dto.ResultBean] 如果日志类似可以继续往下看。 1. 问题原因和处理 先还原事故现场(只展示核心问题代码) 接口层代码: @Rest Controller 集成Spring Security权限框架后出现无法写入 JSON 的问题 解决 ,报错内容为:Resolved [org.springframework.http.converter. HttpMessageNotWritableException : Could not write JSON : A granted authority textual representation is required; nested exception ...... HttpMessageNotWritableException : Could not write JSON : [no message for java.lang.ArrayStoreException]前言一、问题描述二、实体类如下三、 解决 方式总结 最近做一个需求,几个表单的增删改查功能。由我和另外一个同事共同完成功能。在使用@Validated和@NotBlank作参数校验时遇到了一个令人头疼的问题 一、问题描述 保存功能的参数校验在本地测试没有任何问题,发布到线上后,就报错 org.sprin controller 返回 参数 json 后, 返回 给前端的时候,报 异常 org.springframework.http.converter. HttpMessageNotWritableException : Could not write JSON : (was java.lang.NullPointerException); nested exception is com.fasterxml.jackson.databind. Json MappingException: (was java.lang.NullPo 昨天做多对多的时遇到这个错误,网上找了一大堆,都没有 解决 掉,这个 异常 是说要解析的对象解析不了,就有可能该对象为null了,为了测试,我把数据库的数据都填上去 结果还是报错看来是时候debug下了果然,好多null.....但是那个红色框的什么鬼,不是有数据么接下来去看看 是否时配置的问题好像也没什么东西有问题。。。 不对,原来如此。屌大的人都已经看出来... org.springframework.http.converter. HttpMessageNotWritableException : No converter for xxx with preset Content-Type 'null' public CommonReturnEntity(String status, Object data) { this.status = status; this.data = data; // 表明某个请求处理结果