com.fasterxml.jackson.databind.exc.InvalidDefinitionException

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();
 // 转换对象为json
 String json = new ObjectMapper().writeValueAsString(cart);
 // 存入redis
 jedis.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方法 然后问题就迎刃而解.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值