【问题解决】JSON数据出现的Could not write content: No serializer found for class 错误解决办法

1,134 阅读1分钟

1、问题来源

如果实体类有一属性是其他实体类的类型,并且我们使用了延迟加载所有导致在处理该对象的时候有些属性不能被序列化才会报这个错。

错误信息:

com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class
org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory\$Enhanced
ResultObjectProxyImpl and no properties discovered to create BeanSerializer 
(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) ) 
(through reference chain: java.util.HashMap["XXX"]->java.util.ArrayList[0]-
>com.moguichun.model.XXX_\$\$_jvst552_0["handler"])  

2、解决办法

解决的办法有两个:

  1. 在Mybatis的全局配置文件中禁用延迟加载配置:
< setting name="lazyLoadingEnabled" value="false" />
  1. 在返回的实体类上添加注解,忽略不能序列化的属性:
@JsonIgnoreProperties(value = { "handler" })

推荐使用第二种解决办法,因为配置修改全局属性会对系统的其他方面造成影响。