当前位置: 代码迷 >> 综合 >> com.fasterxml.jackson.databind.exc.InvalidDefinitionException
  详细解决方案

com.fasterxml.jackson.databind.exc.InvalidDefinitionException

热度:17   发布时间:2024-02-25 18:14:54.0

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.itheima.domain.Cart and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

最近在使用redis存储缓存数据是,用到了将对象转换成json的形式,遇到了以上的一个小错误,修改了好久才发现,因此在这里记录一下.

java代码

Cart cart = getCart(loginUser);
cart.addCart(cartItem);// 将购物车对象存入redis缓存Jedis jedis = JedisPoolUtils.getJedis();// 转换对象为jsonString json = new ObjectMapper().writeValueAsString(cart);// 存入redisjedis.set(Constant.CART+loginUser.getUid(),json);jedis.close();

上面是获取了cart(实体类)的对象,为其赋值后在转换成json形式字符串存入redis中,但是在后面测试的时候,一直会出现InvalidDefinitionException: No serializer found for class 这个错误.而翻译意思就是告诉我无效的定义,没有找到类的序列化器.但是好奇的是我并没有使用到需要序列化类的地方.不过后来经过对这个转换方法的解读,发现将对象转换为json其实就是将实体类进行了一个序列化操作,而在这个操作中,就需要用到我们的get/set方法.
解决

@Data
public class Cart {
    

我这里使用的是lombok 其实也就是相应的为实体类加上get/set方法 然后问题就迎刃而解.

  相关解决方案